@pendle/core-v2 5.1.1 → 5.2.0-beta-1
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/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +23 -67
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +6 -19
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/SYBaseUpg.dbg.json +4 -0
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/{SYBaseWithoutPermitUpg.json → SYBaseUpg.json} +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +2 -2
- package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.json +122 -0
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.json +91 -0
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.dbg.json +4 -0
- package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.json +262 -0
- package/build/artifacts/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol/SDKErrorsDirectory.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol/SDKErrorsDirectory.json +2 -27
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracle.sol/PendleChainlinkOracle.json +274 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleBase.sol/PendleChainlinkOracleBase.json +253 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.json +289 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +4 -0
- package/build/artifacts/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.json +305 -0
- package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +6 -27
- package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +2 -3
- package/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +2 -1
- package/contracts/interfaces/IPChainlinkOracle.sol +15 -0
- package/contracts/interfaces/IPChainlinkOracleFactory.sol +22 -0
- package/contracts/interfaces/IPChainlinkOracleWithQuote.sol +8 -0
- package/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol +0 -5
- package/contracts/oracles/factory/PendleChainlinkOracle.sol +21 -0
- package/contracts/oracles/factory/PendleChainlinkOracleBase.sol +138 -0
- package/contracts/oracles/factory/PendleChainlinkOracleFactory.sol +99 -0
- package/contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol +46 -0
- package/package.json +1 -1
- package/typechain-types/IPChainlinkOracle.ts +221 -0
- package/typechain-types/IPChainlinkOracleFactory.ts +123 -0
- package/typechain-types/IPChainlinkOracleWithQuote.ts +404 -0
- package/typechain-types/PendleChainlinkOracle.ts +299 -0
- package/typechain-types/PendleChainlinkOracleBase.ts +299 -0
- package/typechain-types/PendleChainlinkOracleFactory.ts +389 -0
- package/typechain-types/PendleChainlinkOracleWithQuote.ts +335 -0
- package/typechain-types/PendleVotingControllerUpg.ts +43 -135
- package/typechain-types/VotingControllerStorageUpg.ts +15 -34
- package/typechain-types/factories/IPChainlinkOracleFactory__factory.ts +110 -0
- package/typechain-types/factories/IPChainlinkOracleWithQuote__factory.ts +281 -0
- package/typechain-types/factories/IPChainlinkOracle__factory.ts +137 -0
- package/typechain-types/factories/PendleChainlinkOracleBase__factory.ts +272 -0
- package/typechain-types/factories/PendleChainlinkOracleFactory__factory.ts +351 -0
- package/typechain-types/factories/PendleChainlinkOracleWithQuote__factory.ts +389 -0
- package/typechain-types/factories/PendleChainlinkOracle__factory.ts +354 -0
- package/typechain-types/factories/PendleGlpSY__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +22 -66
- package/typechain-types/factories/SDKErrorsDirectory__factory.ts +1 -26
- package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +6 -19
- package/typechain-types/hardhat.d.ts +72 -0
- package/typechain-types/index.ts +14 -0
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithoutPermitUpg.sol/SYBaseWithoutPermitUpg.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol/PendleStkGHOSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol/PendleStkGHOSY.json +0 -1160
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol/PendleCMETHSY.dbg.json +0 -4
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol/PendleCMETHSY.json +0 -1049
- package/build/artifacts/contracts/interfaces/AaveV3/IAaveStkGHO.sol/IAaveStkGHO.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/AaveV3/IAaveStkGHO.sol/IAaveStkGHO.json +0 -116
- package/build/artifacts/contracts/interfaces/Angle/IAngleDistributor.sol/IAngleDistributor.dbg.json +0 -4
- package/build/artifacts/contracts/interfaces/Angle/IAngleDistributor.sol/IAngleDistributor.json +0 -39
- package/contracts/core/StandardizedYield/implementations/AaveV3/PendleStkGHOSY.sol +0 -130
- package/contracts/core/StandardizedYield/implementations/Mantle/PendleCMETHSY.sol +0 -82
- package/contracts/interfaces/AaveV3/IAaveStkGHO.sol +0 -17
- package/contracts/interfaces/Angle/IAngleDistributor.sol +0 -12
- package/deployments/1-markets/STKGHO-MAINNET-APR2025.json +0 -14
- package/deployments/42161-markets/DOLOMITE-USDC-ARBITRUM-JUN2025.json +0 -14
- package/deployments/42161-markets/DOLOMITE-WBTC-ARBITRUM-JUN2025.json +0 -14
- package/deployments/5000-markets/CMETH-MANTLE-FEB2025.json +0 -14
- package/deployments/56-markets/VENUS-BNB-BSC-JUN2025.json +0 -14
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "PendleChainlinkOracleWithQuote",
|
|
4
|
+
"sourceName": "contracts/oracles/factory/PendleChainlinkOracleWithQuote.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "address",
|
|
10
|
+
"name": "_market",
|
|
11
|
+
"type": "address"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "uint16",
|
|
15
|
+
"name": "_twapDuration",
|
|
16
|
+
"type": "uint16"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "enum PendleOracleType",
|
|
20
|
+
"name": "_baseOracleType",
|
|
21
|
+
"type": "uint8"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"internalType": "address",
|
|
25
|
+
"name": "_quoteOracle",
|
|
26
|
+
"type": "address"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"stateMutability": "nonpayable",
|
|
30
|
+
"type": "constructor"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"inputs": [],
|
|
34
|
+
"name": "InvalidRoundId",
|
|
35
|
+
"type": "error"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"inputs": [
|
|
39
|
+
{
|
|
40
|
+
"internalType": "int256",
|
|
41
|
+
"name": "exchangeRate",
|
|
42
|
+
"type": "int256"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"name": "MarketExchangeRateBelowOne",
|
|
46
|
+
"type": "error"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"inputs": [],
|
|
50
|
+
"name": "MarketExpired",
|
|
51
|
+
"type": "error"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"inputs": [],
|
|
55
|
+
"name": "MarketProportionMustNotEqualOne",
|
|
56
|
+
"type": "error"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"inputs": [
|
|
60
|
+
{
|
|
61
|
+
"internalType": "int256",
|
|
62
|
+
"name": "rateScalar",
|
|
63
|
+
"type": "int256"
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"name": "MarketRateScalarBelowZero",
|
|
67
|
+
"type": "error"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"inputs": [
|
|
71
|
+
{
|
|
72
|
+
"internalType": "int256",
|
|
73
|
+
"name": "totalPt",
|
|
74
|
+
"type": "int256"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"internalType": "int256",
|
|
78
|
+
"name": "totalAsset",
|
|
79
|
+
"type": "int256"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"name": "MarketZeroTotalPtOrTotalAsset",
|
|
83
|
+
"type": "error"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"inputs": [],
|
|
87
|
+
"name": "baseOracleType",
|
|
88
|
+
"outputs": [
|
|
89
|
+
{
|
|
90
|
+
"internalType": "enum PendleOracleType",
|
|
91
|
+
"name": "",
|
|
92
|
+
"type": "uint8"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"stateMutability": "view",
|
|
96
|
+
"type": "function"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"inputs": [],
|
|
100
|
+
"name": "decimals",
|
|
101
|
+
"outputs": [
|
|
102
|
+
{
|
|
103
|
+
"internalType": "uint8",
|
|
104
|
+
"name": "",
|
|
105
|
+
"type": "uint8"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"stateMutability": "pure",
|
|
109
|
+
"type": "function"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"inputs": [],
|
|
113
|
+
"name": "description",
|
|
114
|
+
"outputs": [
|
|
115
|
+
{
|
|
116
|
+
"internalType": "string",
|
|
117
|
+
"name": "",
|
|
118
|
+
"type": "string"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"stateMutability": "pure",
|
|
122
|
+
"type": "function"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"inputs": [],
|
|
126
|
+
"name": "factory",
|
|
127
|
+
"outputs": [
|
|
128
|
+
{
|
|
129
|
+
"internalType": "address",
|
|
130
|
+
"name": "",
|
|
131
|
+
"type": "address"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"stateMutability": "view",
|
|
135
|
+
"type": "function"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"inputs": [],
|
|
139
|
+
"name": "fromTokenDecimals",
|
|
140
|
+
"outputs": [
|
|
141
|
+
{
|
|
142
|
+
"internalType": "uint8",
|
|
143
|
+
"name": "",
|
|
144
|
+
"type": "uint8"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"stateMutability": "view",
|
|
148
|
+
"type": "function"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"inputs": [
|
|
152
|
+
{
|
|
153
|
+
"internalType": "uint80",
|
|
154
|
+
"name": "roundId",
|
|
155
|
+
"type": "uint80"
|
|
156
|
+
}
|
|
157
|
+
],
|
|
158
|
+
"name": "getRoundData",
|
|
159
|
+
"outputs": [
|
|
160
|
+
{
|
|
161
|
+
"internalType": "uint80",
|
|
162
|
+
"name": "",
|
|
163
|
+
"type": "uint80"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"internalType": "int256",
|
|
167
|
+
"name": "",
|
|
168
|
+
"type": "int256"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"internalType": "uint256",
|
|
172
|
+
"name": "",
|
|
173
|
+
"type": "uint256"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"internalType": "uint256",
|
|
177
|
+
"name": "",
|
|
178
|
+
"type": "uint256"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"internalType": "uint80",
|
|
182
|
+
"name": "",
|
|
183
|
+
"type": "uint80"
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"stateMutability": "view",
|
|
187
|
+
"type": "function"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"inputs": [],
|
|
191
|
+
"name": "latestRoundData",
|
|
192
|
+
"outputs": [
|
|
193
|
+
{
|
|
194
|
+
"internalType": "uint80",
|
|
195
|
+
"name": "roundId",
|
|
196
|
+
"type": "uint80"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"internalType": "int256",
|
|
200
|
+
"name": "answer",
|
|
201
|
+
"type": "int256"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"internalType": "uint256",
|
|
205
|
+
"name": "startedAt",
|
|
206
|
+
"type": "uint256"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"internalType": "uint256",
|
|
210
|
+
"name": "updatedAt",
|
|
211
|
+
"type": "uint256"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"internalType": "uint80",
|
|
215
|
+
"name": "answeredInRound",
|
|
216
|
+
"type": "uint80"
|
|
217
|
+
}
|
|
218
|
+
],
|
|
219
|
+
"stateMutability": "view",
|
|
220
|
+
"type": "function"
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"inputs": [],
|
|
224
|
+
"name": "market",
|
|
225
|
+
"outputs": [
|
|
226
|
+
{
|
|
227
|
+
"internalType": "address",
|
|
228
|
+
"name": "",
|
|
229
|
+
"type": "address"
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"stateMutability": "view",
|
|
233
|
+
"type": "function"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"inputs": [],
|
|
237
|
+
"name": "quoteOracle",
|
|
238
|
+
"outputs": [
|
|
239
|
+
{
|
|
240
|
+
"internalType": "address",
|
|
241
|
+
"name": "",
|
|
242
|
+
"type": "address"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"stateMutability": "view",
|
|
246
|
+
"type": "function"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"inputs": [],
|
|
250
|
+
"name": "quoteScale",
|
|
251
|
+
"outputs": [
|
|
252
|
+
{
|
|
253
|
+
"internalType": "int256",
|
|
254
|
+
"name": "",
|
|
255
|
+
"type": "int256"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"stateMutability": "view",
|
|
259
|
+
"type": "function"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"inputs": [],
|
|
263
|
+
"name": "toTokenDecimals",
|
|
264
|
+
"outputs": [
|
|
265
|
+
{
|
|
266
|
+
"internalType": "uint8",
|
|
267
|
+
"name": "",
|
|
268
|
+
"type": "uint8"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"stateMutability": "view",
|
|
272
|
+
"type": "function"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"inputs": [],
|
|
276
|
+
"name": "twapDuration",
|
|
277
|
+
"outputs": [
|
|
278
|
+
{
|
|
279
|
+
"internalType": "uint16",
|
|
280
|
+
"name": "",
|
|
281
|
+
"type": "uint16"
|
|
282
|
+
}
|
|
283
|
+
],
|
|
284
|
+
"stateMutability": "view",
|
|
285
|
+
"type": "function"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"inputs": [],
|
|
289
|
+
"name": "version",
|
|
290
|
+
"outputs": [
|
|
291
|
+
{
|
|
292
|
+
"internalType": "uint256",
|
|
293
|
+
"name": "",
|
|
294
|
+
"type": "uint256"
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"stateMutability": "pure",
|
|
298
|
+
"type": "function"
|
|
299
|
+
}
|
|
300
|
+
],
|
|
301
|
+
"bytecode": "0x6101a06040523480156200001257600080fd5b506040516200432338038062004323833981016040819052620000359162001b49565b336080526001600160a01b03841660a05261ffff831660c05283838380600581111562000066576200006662001bba565b6101208160058111156200007e576200007e62001bba565b9052506200008d83826200014d565b60ff908116610100521660e052620000a462000390565b6001600160401b0316610140525050506001600160a01b0381166101608190526040805163313ce56760e01b815290516200013e929163313ce5679160048083019260209291908290030181865afa15801562000105573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012b919062001be2565b6200013890600a62001d13565b620004f9565b6101805250620021e992505050565b6000806000846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b7919062001d24565b505090506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000222919062001be2565b90506000826001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028b919062001d78565b925060059150620002999050565b866005811115620002ae57620002ae62001bba565b03620002c35760129450925062000389915050565b6004866005811115620002da57620002da62001bba565b03620002ef5750601293509150620003899050565b600186600581111562000306576200030662001bba565b1480620003275750600386600581111562000325576200032562001bba565b145b156200033b57935083925062000389915050565b600086600581111562000352576200035262001bba565b1480620003735750600286600581111562000371576200037162001bba565b145b15620003855793509150620003899050565b5050505b9250929050565b620019d462001b1760201b176000610120516005811115620003b657620003b662001bba565b03620003cc5750620004016200051460201b1790565b6001610120516005811115620003e657620003e662001bba565b03620003fc57506200044e6200056b60201b1790565b600261012051600581111562000416576200041662001bba565b036200042c575062000491620005b860201b1790565b600361012051600581111562000446576200044662001bba565b036200045c5750620004c6620005f560201b1790565b600461012051600581111562000476576200047662001bba565b036200048c5750620004f56200062a60201b1790565b6005610120516005811115620004a657620004a662001bba565b03620004bc5750620005446200068360201b1790565b60405162461bcd60e51b815260206004820152600d60248201526c1b9bdd081cdd5c1c1bdc9d1959609a1b60448201526064015b60405180910390fd5b60006001600160ff1b038211156200051057600080fd5b5090565b600080806200052385620006dd565b915091508082106200055157620005478262000540878762000921565b9062000a06565b9250505062000565565b620005478162000540878762000921565b50505b92915050565b600080806200057a85620006dd565b91509150808210620005925762000547858562000921565b8082620005a0878762000921565b620005ac919062001dca565b62000547919062001dfa565b60008080620005c785620006dd565b91509150808210620005e457620005478262000540878762000a3a565b620005478162000540878762000a3a565b600080806200060485620006dd565b915091508082106200061c5762000547858562000a3a565b8082620005a0878762000a3a565b60008080620006426001600160a01b038616620006dd565b909250905060006200065686868462000a63565b905081831062000677576200066c818462000a06565b935050505062000565565b6200066c818362000a06565b600080806200069b6001600160a01b038616620006dd565b90925090506000620006af86868462000a63565b9050818310620006c457925062000565915050565b81620006d1848362001dca565b6200066c919062001dfa565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000722573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000748919062001d24565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200078c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007b2919062001e11565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200081b919062001e11565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200085c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000882919062001e2b565b8015620008fb575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008f0919062001e4f565b6001600160801b0316145b156200090a5780935062000919565b62000916858262000c1b565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000963573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000989919062001e11565b9050428111620009a557670de0b6b3a764000091505062000565565b6000620009b3858562000c33565b90506000620009c3428462001e7a565b90506000620009dd620009d7848462000d6c565b62000db1565b9050620009f3670de0b6b3a76400008262000a06565b94505050505062000565565b5092915050565b60008062000a1d670de0b6b3a76400008562001dca565b905082818162000a315762000a3162001de4565b04949350505050565b600062000a48838362000921565b62000a5c90670de0b6b3a764000062001e7a565b9392505050565b60405163794052f360e01b81526000600482018190529081906001600160a01b0386169063794052f39060240161012060405180830381865afa15801562000aaf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ad5919062001f05565b90506000428260a001511162000b115762000afb84836020015162000dc160201b60201c565b825162000b09919062001f8c565b905062000bfa565b600062000b2083864262000e01565b905060008062000b3289868a62000f0f565b91509150600062000b6162000b5b85604001518562000b52919062001faf565b86519062000f90565b62000fb5565b9050600062000bb062000b758385620013e3565b62000b8990670de0b6b3a764000062001f8c565b8851602088015162000b9d90869062000f90565b62000ba9919062001faf565b90620013e3565b905062000bc98482896000015162000ba9919062001f8c565b62000bd58285620013e3565b866020015162000be6919062001faf565b62000bf2919062001f8c565b955050505050505b604082015162000c1190620009d7908390620013e3565b9695505050505050565b600081831162000c2c578162000a5c565b5090919050565b60408051600280825260608201835260009283929190602083019080368337019050509050828160008151811062000c6f5762000c6f62001fd2565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd9062000cb590859060040162001fe8565b600060405180830381865afa15801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd919081019062002034565b90508363ffffffff168160008151811062000d1c5762000d1c62001fd2565b60200260200101518260018151811062000d3a5762000d3a62001fd2565b602002602001015162000d4e9190620020fe565b62000d5a919062002121565b6001600160d81b031695945050505050565b60008062000d806201518061016d62001dca565b62000d8c848662001dca565b62000d98919062001dfa565b905062000da962000b5b82620004f9565b949350505050565b6000808212156200051057600080fd5b6000806000831262000dd557600162000dd9565b6000195b905062000df5620001388562000def866200140e565b62001423565b62000da990826200214a565b62000e2d6040518060800160405280600081526020016000815260200160008152602001600081525090565b60a0840151821062000e525760405163b2094b5960e01b815260040160405180910390fd5b6000828560a0015162000e66919062001e7a565b905062000e74858262001446565b8252602085015162000e8890859062000dc1565b60208301528451158062000e9e57506020820151155b1562000ece578451602083015160405163b1c4aefb60e01b815260048101929092526024820152604401620004f0565b84516101008601516020840151845162000eec9392919085620014ad565b604083015260c085015162000f02908262000d6c565b6060830152509392505050565b6000808062000f286001600160a01b0387168562000c33565b90506000428660a0015162000f3e919062001e7a565b905062000f4c828262000d6c565b9350600062000f678761010001518362000d6c60201b60201c565b9050600262000f77868362001f8c565b62000f83919062002180565b9350505050935093915050565b60008062000f9f83856200214a565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff19821215801562000fdb575068070c1cc73b00c800008213155b6200101c5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401620004f0565b60008212156200105c5762001035600083900362000fb5565b6ec097ce7bc90715b34b9f10000000008162001055576200105562001de4565b0592915050565b60006806f05b59d3b200000083126200109e57506806f05b59d3b1ffffff1990910190770195e54c5dd42177f53a27172fa9ec630262827000000000620010d6565b6803782dace9d90000008312620010d257506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380620010d6565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac620000008412620011275768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841262001164576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126200119f57682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c4000008412620011da576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126200121457680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126200124e5768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841262001288576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c400008412620012c25768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b600080620013fa670de0b6b3a7640000856200214a565b905082818162000fac5762000fac62001de4565b600080821362000510576200056582620021b4565b6000670de0b6b3a76400006200143a848462001dca565b62000a5c919062001dfa565b60006200145382620004f9565b62001468620001386201518061016d62001dca565b84608001516200147991906200214a565b62001485919062002180565b9050600081136200056557604051630e520c3b60e11b815260048101829052602401620004f0565b600080620014bc868462000d6c565b9050670de0b6b3a7640000811215620014ec5760405163329e322960e21b815260048101829052602401620004f0565b600062001506620014fe878a62001f8c565b8990620013e3565b9050600062001515826200153c565b9050620015238187620013e3565b6200152f908462001faf565b9998505050505050505050565b6000670de0b6b3a76400008203620015675760405163a9c8b14d60e01b815260040160405180910390fd5b6000620015896200158184670de0b6b3a764000062001faf565b8490620013e3565b905062000a5c816000808213620015d35760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401620004f0565b670c7d713b49da000082138015620015f25750670f43fc2c04ee000082125b156200161c57670de0b6b3a76400006200160c836200162c565b8162001055576200105562001de4565b620005658262001757565b919050565b670de0b6b3a7640000026000806ec097ce7bc90715b34b9f1000000000808401906ec097ce7bc90715b34b9f0fffffffff198501028162001671576200167162001de4565b05905060006ec097ce7bc90715b34b9f100000000082800205905081806ec097ce7bc90715b34b9f100000000081840205915060038205016ec097ce7bc90715b34b9f100000000082840205915060058205016ec097ce7bc90715b34b9f100000000082840205915060078205016ec097ce7bc90715b34b9f100000000082840205915060098205016ec097ce7bc90715b34b9f1000000000828402059150600b8205016ec097ce7bc90715b34b9f1000000000828402059150600d8205016ec097ce7bc90715b34b9f1000000000828402059150600f82050160020295945050505050565b6000670de0b6b3a76400008212156200179f5762001796826ec097ce7bc90715b34b9f1000000000816200178f576200178f62001de4565b0562001757565b60000392915050565b60007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c00000000000008312620017f157770195e54c5dd42177f53a27172fa9ec630262827000000000830592506806f05b59d3b2000000015b73011798004d755d3c8bc8e03204cf44619e00000083126200182a576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff0084000831262001873576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312620018af576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312620018e757693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126200191f57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312620019555768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb4174612111083126200198157680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312620019b7576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312620019ed576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b286603831262001a22576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac831262001a57576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028162001a835762001a8362001de4565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b62001b21620021d3565b565b6001600160a01b038116811462001b3957600080fd5b50565b8051620016278162001b23565b6000806000806080858703121562001b6057600080fd5b845162001b6d8162001b23565b602086015190945061ffff8116811462001b8657600080fd5b60408601519093506006811062001b9c57600080fd5b606086015190925062001baf8162001b23565b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b805160ff811681146200162757600080fd5b60006020828403121562001bf557600080fd5b62000a5c8262001bd0565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562001c5757816000190482111562001c3b5762001c3b62001c00565b8085161562001c4957918102915b93841c939080029062001c1b565b509250929050565b60008262001c705750600162000565565b8162001c7f5750600062000565565b816001811462001c98576002811462001ca35762001cc3565b600191505062000565565b60ff84111562001cb75762001cb762001c00565b50506001821b62000565565b5060208310610133831016604e8410600b841016171562001ce8575081810a62000565565b62001cf4838362001c16565b806000190482111562001d0b5762001d0b62001c00565b029392505050565b600062000a5c60ff84168362001c5f565b60008060006060848603121562001d3a57600080fd5b835162001d478162001b23565b602085015190935062001d5a8162001b23565b604085015190925062001d6d8162001b23565b809150509250925092565b60008060006060848603121562001d8e57600080fd5b83516002811062001d9e57600080fd5b602085015190935062001db18162001b23565b915062001dc16040850162001bd0565b90509250925092565b808202811582820484141762000565576200056562001c00565b634e487b7160e01b600052601260045260246000fd5b60008262001e0c5762001e0c62001de4565b500490565b60006020828403121562001e2457600080fd5b5051919050565b60006020828403121562001e3e57600080fd5b8151801515811462000a5c57600080fd5b60006020828403121562001e6257600080fd5b81516001600160801b038116811462000a5c57600080fd5b8181038181111562000565576200056562001c00565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171562001ecc5762001ecc62001e90565b60405290565b604051601f8201601f191681016001600160401b038111828210171562001efd5762001efd62001e90565b604052919050565b6000610120828403121562001f1957600080fd5b62001f2362001ea6565b82518152602083015160208201526040830151604082015262001f496060840162001b3c565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171562000562576200056262001c00565b8181036000831280158383131683831282161715620009ff57620009ff62001c00565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156200202857835163ffffffff168352928401929184019160010162002004565b50909695505050505050565b600060208083850312156200204857600080fd5b82516001600160401b03808211156200206057600080fd5b818501915085601f8301126200207557600080fd5b8151818111156200208a576200208a62001e90565b8060051b91506200209d84830162001ed2565b8181529183018401918481019088841115620020b857600080fd5b938501935b83851015620020f257845192506001600160d81b0383168314620020e15760008081fd5b8282529385019390850190620020bd565b98975050505050505050565b6001600160d81b03828116828216039080821115620009ff57620009ff62001c00565b60006001600160d81b03838116806200213e576200213e62001de4565b92169190910492915050565b80820260008212600160ff1b8414161562002169576200216962001c00565b818105831482151762000565576200056562001c00565b60008262002192576200219262001de4565b600160ff1b821460001984141615620021af57620021af62001c00565b500590565b6000600160ff1b8201620021cc57620021cc62001c00565b5060000390565b634e487b7160e01b600052605160045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610180516120a1620022826000396000818160f601526103b40152600081816101650152610327015260006105e40152600060b90152600081816101ca0152610b0a01526000818161025f0152610b3501526000818161012b01526105bf0152600081816101f1015261059e0152600061028601526120a16000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c80630aa33a24146100b4578063172009a6146100f157806326d8954514610126578063289d77cc14610160578063313ce5671461019457806354fd4d50146101a95780637284e416146101b05780637ae19f15146101c557806380f55605146101ec5780639a6fc8f514610213578063bafd4e381461025a578063c45a015514610281578063feaf968c146102a8575b600080fd5b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516100e891906119de565b60405180910390f35b6101187f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e8565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016100e8565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b6040516100e89190611a06565b60125b60405160ff90911681526020016100e8565b6001610118565b6101b86102b0565b6040516100e89190611a1a565b6101977f000000000000000000000000000000000000000000000000000000000000000081565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b610226610221366004611a81565b6102d0565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a0016100e8565b6101977f000000000000000000000000000000000000000000000000000000000000000081565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61022661031a565b606060405180606001604052806022815260200161204a60229139905090565b600080808080856001600160501b038116156102ff5760405163bfbe031f60e01b815260040160405180910390fd5b61030761031a565b939b929a50909850965090945092505050565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611a9e565b50935050925050600096507f0000000000000000000000000000000000000000000000000000000000000000826103dc610594565b6103e69190611b0c565b6103f09190611b52565b969760009650909450859350915050565b600080600061040f85610615565b915091508082106104375761042e826104288787610845565b9061091a565b92505050610448565b61042e816104288787610845565b50505b92915050565b600080600061045c85610615565b915091508082106104715761042e8585610845565b808261047d8787610845565b6104879190611b80565b61042e9190611b97565b600080600061049f85610615565b915091508082106104b85761042e826104288787610949565b61042e816104288787610949565b60008060006104d485610615565b915091508082106104e95761042e8585610949565b808261047d8787610949565b600080600061050c856001600160a01b0316610615565b91509150600061051d86868461096e565b905081831061053a57610530818461091a565b9350505050610448565b610530818361091a565b600080600061055b856001600160a01b0316610615565b91509150600061056c86868461096e565b905081831061057f579250610448915050565b8161058a8483611b80565b6105309190611b97565b600061061061060b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061ffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b610b00565b905090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611bc0565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190611c0d565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611c0d565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611c26565b8015610823575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190611c48565b6001600160801b0316145b156108305780935061083d565b61083a8582610b74565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190611c0d565b90504281116108c457670de0b6b3a7640000915050610448565b60006108d08585610b8a565b905060006108de4284611c71565b905060006108f46108ef8484610cb1565b610ced565b9050610908670de0b6b3a76400008261091a565b945050505050610448565b5092915050565b60008061092f670de0b6b3a764000085611b80565b905082818161094057610940611b3c565b04949350505050565b60006109558383610845565b61096790670de0b6b3a7640000611c71565b9392505050565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b815260040161099e9190611a06565b61012060405180830381865afa1580156109bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e09190611cfe565b90506000428260a0015111610a10576109fd848360200151610d00565b8251610a099190611d80565b9050610adc565b6000610a1d838642610d37565b9050600080610a2d89868a610e3d565b915091506000610a56610a51856040015185610a499190611da0565b865190610eac565b610ecf565b90506000610a9b610a6783856112e4565b610a7990670de0b6b3a7640000611d80565b88516020880151610a8b908690610eac565b610a959190611da0565b906112e4565b9050610ab184828960000151610a959190611d80565b610abb82856112e4565b8660200151610aca9190611da0565b610ad49190611d80565b955050505050505b610af66108ef8360400151836112e490919063ffffffff16565b9695505050505050565b6000610448610b307f0000000000000000000000000000000000000000000000000000000000000000600a611ea4565b610b5b7f0000000000000000000000000000000000000000000000000000000000000000600a611ea4565b610b659085611b80565b610b6f9190611b97565b61130a565b6000818311610b835781610967565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610bc357610bc3611eb3565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610c07908590600401611ec9565b600060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c4c9190810190611f13565b90508363ffffffff1681600081518110610c6857610c68611eb3565b602002602001015182600181518110610c8357610c83611eb3565b6020026020010151610c959190611fd1565b610c9f9190611ff1565b6001600160d81b031695945050505050565b600080610cc36201518061016d611b80565b610ccd8486611b80565b610cd79190611b97565b9050610ce5610a518261130a565b949350505050565b600080821215610cfc57600080fd5b5090565b60008060008312610d12576001610d16565b6000195b9050610d2d610b6f85610d2886611320565b611337565b610ce59082611b0c565b610d626040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d865760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d989190611c71565b9050610da48582611356565b82526020850151610db6908590610d00565b602083015284511580610dcb57506020820151155b15610dfe578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b610e1c856000015186610100015184602001518560000151856113b2565b604083015260c0850151610e309082610cb1565b6060830152509392505050565b60008080610e546001600160a01b03871685610b8a565b90506000428660a00151610e689190611c71565b9050610e748282610cb1565b93506000610e8787610100015183610cb1565b90506002610e958683611d80565b610e9f9190611b52565b9350505050935093915050565b600080610eb98385611b0c565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610ef4575068070c1cc73b00c800008213155b610f335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610df5565b6000821215610f6b57610f4882600003610ecf565b6a0c097ce7bc90715b34b9f160241b81610f6457610f64611b3c565b0592915050565b60006806f05b59d3b20000008312610fa957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610fdf565b6803782dace9d90000008312610fdb57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610fdf565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261102f5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261106b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126110a557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c40000084126110df576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261111857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126111515768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261118a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111c35768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000806112f9670de0b6b3a764000085611b0c565b9050828181610ec657610ec6611b3c565b60006001600160ff1b03821115610cfc57600080fd5b6000808213610cfc5761133282612017565b610448565b6000670de0b6b3a764000061134c8484611b80565b6109679190611b97565b60006113618261130a565b611373610b6f6201518061016d611b80565b84608001516113829190611b0c565b61138c9190611b52565b90506000811361044857604051630e520c3b60e11b815260048101829052602401610df5565b6000806113bf8684610cb1565b9050670de0b6b3a76400008112156113ed5760405163329e322960e21b815260048101829052602401610df5565b60006114036113fc878a611d80565b89906112e4565b9050600061141082611433565b905061141c81876112e4565b6114269084611da0565b9998505050505050505050565b6000670de0b6b3a7640000820361145d5760405163a9c8b14d60e01b815260040160405180910390fd5b600061147b61147484670de0b6b3a7640000611da0565b84906112e4565b90506109678160008082136114c25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610df5565b670c7d713b49da0000821380156114e05750670f43fc2c04ee000082125b1561150457670de0b6b3a76400006114f783611512565b81610f6457610f64611b3c565b61044882611631565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161155357611553611b3c565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561167257611669826a0c097ce7bc90715b34b9f160241b8161166357611663611b3c565b05611631565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126116bd5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126116f4576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff0084000831261173c576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611777576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126117ae57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126117e557690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261181a5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261184557680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261187a576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126118af576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126118e3576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611917576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161194057611940611b3c565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6119dc612033565b565b6020810160068310611a0057634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b0391909116815260200190565b60006020808352835180602085015260005b81811015611a4857858101830151858201604001528201611a2c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160501b0381168114611a7e57600080fd5b50565b600060208284031215611a9357600080fd5b813561096781611a69565b600080600080600060a08688031215611ab657600080fd5b8551611ac181611a69565b809550506020860151935060408601519250606086015191506080860151611ae881611a69565b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b80820260008212600160ff1b84141615611b2857611b28611af6565b818105831482151761044857610448611af6565b634e487b7160e01b600052601260045260246000fd5b600082611b6157611b61611b3c565b600160ff1b821460001984141615611b7b57611b7b611af6565b500590565b808202811582820484141761044857610448611af6565b600082611ba657611ba6611b3c565b500490565b6001600160a01b0381168114611a7e57600080fd5b600080600060608486031215611bd557600080fd5b8351611be081611bab565b6020850151909350611bf181611bab565b6040850151909250611c0281611bab565b809150509250925092565b600060208284031215611c1f57600080fd5b5051919050565b600060208284031215611c3857600080fd5b8151801515811461096757600080fd5b600060208284031215611c5a57600080fd5b81516001600160801b038116811461096757600080fd5b8181038181111561044857610448611af6565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611cbd57611cbd611c84565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611c84565b604052919050565b805161150d81611bab565b60006101208284031215611d1157600080fd5b611d19611c9a565b825181526020830151602082015260408301516040820152611d3d60608401611cf3565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561044557610445611af6565b818103600083128015838313168383128216171561091357610913611af6565b600181815b80851115611dfb578160001904821115611de157611de1611af6565b80851615611dee57918102915b93841c9390800290611dc5565b509250929050565b600082611e1257506001610448565b81611e1f57506000610448565b8160018114611e355760028114611e3f57611e5b565b6001915050610448565b60ff841115611e5057611e50611af6565b50506001821b610448565b5060208310610133831016604e8410600b8410161715611e7e575081810a610448565b611e888383611dc0565b8060001904821115611e9c57611e9c611af6565b029392505050565b600061096760ff841683611e03565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015611f0757835163ffffffff1683529284019291840191600101611ee5565b50909695505050505050565b60006020808385031215611f2657600080fd5b82516001600160401b0380821115611f3d57600080fd5b818501915085601f830112611f5157600080fd5b815181811115611f6357611f63611c84565b8060051b9150611f74848301611cc3565b8181529183018401918481019088841115611f8e57600080fd5b938501935b83851015611fc557845192506001600160d81b0383168314611fb55760008081fd5b8282529385019390850190611f93565b98975050505050505050565b6001600160d81b0382811682821603908082111561091357610913611af6565b60006001600160d81b038381168061200b5761200b611b3c565b92169190910492915050565b6000600160ff1b820161202c5761202c611af6565b5060000390565b634e487b7160e01b600052605160045260246000fdfe50656e646c6520436861696e6c696e6b2d636f6d70617469626c65204f7261636c65a2646970667358221220ee5734e0b36e571dbfbbab33f8a467eba1d1ae6f6c80a5aae8f62093a0dedb9c64736f6c63430008170033",
|
|
302
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100af5760003560e01c80630aa33a24146100b4578063172009a6146100f157806326d8954514610126578063289d77cc14610160578063313ce5671461019457806354fd4d50146101a95780637284e416146101b05780637ae19f15146101c557806380f55605146101ec5780639a6fc8f514610213578063bafd4e381461025a578063c45a015514610281578063feaf968c146102a8575b600080fd5b6100db7f000000000000000000000000000000000000000000000000000000000000000081565b6040516100e891906119de565b60405180910390f35b6101187f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100e8565b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016100e8565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b6040516100e89190611a06565b60125b60405160ff90911681526020016100e8565b6001610118565b6101b86102b0565b6040516100e89190611a1a565b6101977f000000000000000000000000000000000000000000000000000000000000000081565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b610226610221366004611a81565b6102d0565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a0016100e8565b6101977f000000000000000000000000000000000000000000000000000000000000000081565b6101877f000000000000000000000000000000000000000000000000000000000000000081565b61022661031a565b606060405180606001604052806022815260200161204a60229139905090565b600080808080856001600160501b038116156102ff5760405163bfbe031f60e01b815260040160405180910390fd5b61030761031a565b939b929a50909850965090945092505050565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610383573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a79190611a9e565b50935050925050600096507f0000000000000000000000000000000000000000000000000000000000000000826103dc610594565b6103e69190611b0c565b6103f09190611b52565b969760009650909450859350915050565b600080600061040f85610615565b915091508082106104375761042e826104288787610845565b9061091a565b92505050610448565b61042e816104288787610845565b50505b92915050565b600080600061045c85610615565b915091508082106104715761042e8585610845565b808261047d8787610845565b6104879190611b80565b61042e9190611b97565b600080600061049f85610615565b915091508082106104b85761042e826104288787610949565b61042e816104288787610949565b60008060006104d485610615565b915091508082106104e95761042e8585610949565b808261047d8787610949565b600080600061050c856001600160a01b0316610615565b91509150600061051d86868461096e565b905081831061053a57610530818461091a565b9350505050610448565b610530818361091a565b600080600061055b856001600160a01b0316610615565b91509150600061056c86868461096e565b905081831061057f579250610448915050565b8161058a8483611b80565b6105309190611b97565b600061061061060b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061ffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16565b610b00565b905090565b600080600080846001600160a01b0316632c8ce6bc6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067d9190611bc0565b9250509150816001600160a01b0316633ba0b9a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190611c0d565b93506000816001600160a01b031663d2a3584e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074a9190611c0d565b9050816001600160a01b031663516399df6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae9190611c26565b8015610823575043826001600160a01b03166360e0a9e16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190611c48565b6001600160801b0316145b156108305780935061083d565b61083a8582610b74565b93505b505050915091565b600080836001600160a01b031663e184c9be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190611c0d565b90504281116108c457670de0b6b3a7640000915050610448565b60006108d08585610b8a565b905060006108de4284611c71565b905060006108f46108ef8484610cb1565b610ced565b9050610908670de0b6b3a76400008261091a565b945050505050610448565b5092915050565b60008061092f670de0b6b3a764000085611b80565b905082818161094057610940611b3c565b04949350505050565b60006109558383610845565b61096790670de0b6b3a7640000611c71565b9392505050565b600080846001600160a01b031663794052f360006040518263ffffffff1660e01b815260040161099e9190611a06565b61012060405180830381865afa1580156109bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e09190611cfe565b90506000428260a0015111610a10576109fd848360200151610d00565b8251610a099190611d80565b9050610adc565b6000610a1d838642610d37565b9050600080610a2d89868a610e3d565b915091506000610a56610a51856040015185610a499190611da0565b865190610eac565b610ecf565b90506000610a9b610a6783856112e4565b610a7990670de0b6b3a7640000611d80565b88516020880151610a8b908690610eac565b610a959190611da0565b906112e4565b9050610ab184828960000151610a959190611d80565b610abb82856112e4565b8660200151610aca9190611da0565b610ad49190611d80565b955050505050505b610af66108ef8360400151836112e490919063ffffffff16565b9695505050505050565b6000610448610b307f0000000000000000000000000000000000000000000000000000000000000000600a611ea4565b610b5b7f0000000000000000000000000000000000000000000000000000000000000000600a611ea4565b610b659085611b80565b610b6f9190611b97565b61130a565b6000818311610b835781610967565b5090919050565b604080516002808252606082018352600092839291906020830190803683370190505090508281600081518110610bc357610bc3611eb3565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0386169063883bdbfd90610c07908590600401611ec9565b600060405180830381865afa158015610c24573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c4c9190810190611f13565b90508363ffffffff1681600081518110610c6857610c68611eb3565b602002602001015182600181518110610c8357610c83611eb3565b6020026020010151610c959190611fd1565b610c9f9190611ff1565b6001600160d81b031695945050505050565b600080610cc36201518061016d611b80565b610ccd8486611b80565b610cd79190611b97565b9050610ce5610a518261130a565b949350505050565b600080821215610cfc57600080fd5b5090565b60008060008312610d12576001610d16565b6000195b9050610d2d610b6f85610d2886611320565b611337565b610ce59082611b0c565b610d626040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210610d865760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151610d989190611c71565b9050610da48582611356565b82526020850151610db6908590610d00565b602083015284511580610dcb57506020820151155b15610dfe578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044015b60405180910390fd5b610e1c856000015186610100015184602001518560000151856113b2565b604083015260c0850151610e309082610cb1565b6060830152509392505050565b60008080610e546001600160a01b03871685610b8a565b90506000428660a00151610e689190611c71565b9050610e748282610cb1565b93506000610e8787610100015183610cb1565b90506002610e958683611d80565b610e9f9190611b52565b9350505050935093915050565b600080610eb98385611b0c565b9050670de0b6b3a7640000815b05949350505050565b6000680238fd42c5cf03ffff198212158015610ef4575068070c1cc73b00c800008213155b610f335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610df5565b6000821215610f6b57610f4882600003610ecf565b6a0c097ce7bc90715b34b9f160241b81610f6457610f64611b3c565b0592915050565b60006806f05b59d3b20000008312610fa957506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b610fdf565b6803782dace9d90000008312610fdb57506803782dace9d8ffffff19909101906b1425982cf597cd205cef7380610fdf565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac62000000841261102f5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261106b576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b1880000084126110a557682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c40000084126110df576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac6200000841261111857680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126111515768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261118a576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126111c35768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000806112f9670de0b6b3a764000085611b0c565b9050828181610ec657610ec6611b3c565b60006001600160ff1b03821115610cfc57600080fd5b6000808213610cfc5761133282612017565b610448565b6000670de0b6b3a764000061134c8484611b80565b6109679190611b97565b60006113618261130a565b611373610b6f6201518061016d611b80565b84608001516113829190611b0c565b61138c9190611b52565b90506000811361044857604051630e520c3b60e11b815260048101829052602401610df5565b6000806113bf8684610cb1565b9050670de0b6b3a76400008112156113ed5760405163329e322960e21b815260048101829052602401610df5565b60006114036113fc878a611d80565b89906112e4565b9050600061141082611433565b905061141c81876112e4565b6114269084611da0565b9998505050505050505050565b6000670de0b6b3a7640000820361145d5760405163a9c8b14d60e01b815260040160405180910390fd5b600061147b61147484670de0b6b3a7640000611da0565b84906112e4565b90506109678160008082136114c25760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610df5565b670c7d713b49da0000821380156114e05750670f43fc2c04ee000082125b1561150457670de0b6b3a76400006114f783611512565b81610f6457610f64611b3c565b61044882611631565b919050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff198501028161155357611553611b3c565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561167257611669826a0c097ce7bc90715b34b9f160241b8161166357611663611b3c565b05611631565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126116bd5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126116f4576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff0084000831261173c576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611777576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf85083126117ae57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126117e557690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d03831261181a5768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261184557680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d831261187a576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f177578893793783126118af576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126118e3576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611917576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161194057611940611b3c565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6119dc612033565b565b6020810160068310611a0057634e487b7160e01b600052602160045260246000fd5b91905290565b6001600160a01b0391909116815260200190565b60006020808352835180602085015260005b81811015611a4857858101830151858201604001528201611a2c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160501b0381168114611a7e57600080fd5b50565b600060208284031215611a9357600080fd5b813561096781611a69565b600080600080600060a08688031215611ab657600080fd5b8551611ac181611a69565b809550506020860151935060408601519250606086015191506080860151611ae881611a69565b809150509295509295909350565b634e487b7160e01b600052601160045260246000fd5b80820260008212600160ff1b84141615611b2857611b28611af6565b818105831482151761044857610448611af6565b634e487b7160e01b600052601260045260246000fd5b600082611b6157611b61611b3c565b600160ff1b821460001984141615611b7b57611b7b611af6565b500590565b808202811582820484141761044857610448611af6565b600082611ba657611ba6611b3c565b500490565b6001600160a01b0381168114611a7e57600080fd5b600080600060608486031215611bd557600080fd5b8351611be081611bab565b6020850151909350611bf181611bab565b6040850151909250611c0281611bab565b809150509250925092565b600060208284031215611c1f57600080fd5b5051919050565b600060208284031215611c3857600080fd5b8151801515811461096757600080fd5b600060208284031215611c5a57600080fd5b81516001600160801b038116811461096757600080fd5b8181038181111561044857610448611af6565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715611cbd57611cbd611c84565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611c84565b604052919050565b805161150d81611bab565b60006101208284031215611d1157600080fd5b611d19611c9a565b825181526020830151602082015260408301516040820152611d3d60608401611cf3565b60608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b808201828112600083128015821682158216171561044557610445611af6565b818103600083128015838313168383128216171561091357610913611af6565b600181815b80851115611dfb578160001904821115611de157611de1611af6565b80851615611dee57918102915b93841c9390800290611dc5565b509250929050565b600082611e1257506001610448565b81611e1f57506000610448565b8160018114611e355760028114611e3f57611e5b565b6001915050610448565b60ff841115611e5057611e50611af6565b50506001821b610448565b5060208310610133831016604e8410600b8410161715611e7e575081810a610448565b611e888383611dc0565b8060001904821115611e9c57611e9c611af6565b029392505050565b600061096760ff841683611e03565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015611f0757835163ffffffff1683529284019291840191600101611ee5565b50909695505050505050565b60006020808385031215611f2657600080fd5b82516001600160401b0380821115611f3d57600080fd5b818501915085601f830112611f5157600080fd5b815181811115611f6357611f63611c84565b8060051b9150611f74848301611cc3565b8181529183018401918481019088841115611f8e57600080fd5b938501935b83851015611fc557845192506001600160d81b0383168314611fb55760008081fd5b8282529385019390850190611f93565b98975050505050505050565b6001600160d81b0382811682821603908082111561091357610913611af6565b60006001600160d81b038381168061200b5761200b611b3c565b92169190910492915050565b6000600160ff1b820161202c5761202c611af6565b5060000390565b634e487b7160e01b600052605160045260246000fdfe50656e646c6520436861696e6c696e6b2d636f6d70617469626c65204f7261636c65a2646970667358221220ee5734e0b36e571dbfbbab33f8a467eba1d1ae6f6c80a5aae8f62093a0dedb9c64736f6c63430008170033",
|
|
303
|
+
"linkReferences": {},
|
|
304
|
+
"deployedLinkReferences": {}
|
|
305
|
+
}
|
|
@@ -150,13 +150,8 @@ contract PendleVotingControllerUpg is PendleMsgSenderAppUpg, VotingControllerSto
|
|
|
150
150
|
GOVERNANCE-ONLY FUNCTIONS
|
|
151
151
|
//////////////////////////////////////////////////////////////*/
|
|
152
152
|
|
|
153
|
-
modifier
|
|
154
|
-
require(msg.sender ==
|
|
155
|
-
_;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
modifier onlyRemovePoolHelperAndOwner() {
|
|
159
|
-
require(msg.sender == removePoolHelper || msg.sender == owner, "remove pool not allowed");
|
|
153
|
+
modifier onlyHelperAndOwner() {
|
|
154
|
+
require(msg.sender == ownerHelper || msg.sender == owner, "not allowed");
|
|
160
155
|
_;
|
|
161
156
|
}
|
|
162
157
|
|
|
@@ -167,7 +162,7 @@ contract PendleVotingControllerUpg is PendleMsgSenderAppUpg, VotingControllerSto
|
|
|
167
162
|
* - `pool` must not have been added before (even if has been removed).
|
|
168
163
|
* - `chainId` must be valid.
|
|
169
164
|
*/
|
|
170
|
-
function addPool(uint64 chainId, address pool) external
|
|
165
|
+
function addPool(uint64 chainId, address pool) external onlyHelperAndOwner {
|
|
171
166
|
if (_isPoolActive(pool)) revert Errors.VCPoolAlreadyActive(pool);
|
|
172
167
|
if (allRemovedPools.contains(pool)) revert Errors.VCPoolAlreadyAddAndRemoved(pool);
|
|
173
168
|
|
|
@@ -175,25 +170,13 @@ contract PendleVotingControllerUpg is PendleMsgSenderAppUpg, VotingControllerSto
|
|
|
175
170
|
emit AddPool(chainId, pool);
|
|
176
171
|
}
|
|
177
172
|
|
|
178
|
-
function addMultiPools(uint64[] memory chainIds, address[] memory pools) external onlyAddPoolHelperAndOwner {
|
|
179
|
-
if (chainIds.length != pools.length) revert Errors.ArrayLengthMismatch();
|
|
180
|
-
for (uint256 i = 0; i < chainIds.length; ++i) {
|
|
181
|
-
(uint64 chainId, address pool) = (chainIds[i], pools[i]);
|
|
182
|
-
if (_isPoolActive(pool)) revert Errors.VCPoolAlreadyActive(pool);
|
|
183
|
-
if (allRemovedPools.contains(pool)) revert Errors.VCPoolAlreadyAddAndRemoved(pool);
|
|
184
|
-
|
|
185
|
-
_addPool(chainId, pool);
|
|
186
|
-
emit AddPool(chainId, pool);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
173
|
/**
|
|
191
174
|
* @notice remove a pool from voting. Can only be done by governance
|
|
192
175
|
* @custom:gov NOTE TO GOV:
|
|
193
176
|
* - Previous week's results should have been broadcasted prior to calling this function.
|
|
194
177
|
* - `pool` must be currently active.
|
|
195
178
|
*/
|
|
196
|
-
function removePool(address pool) external
|
|
179
|
+
function removePool(address pool) external onlyOwner {
|
|
197
180
|
if (!_isPoolActive(pool)) revert Errors.VCInactivePool(pool);
|
|
198
181
|
|
|
199
182
|
uint64 chainId = poolData[pool].chainId;
|
|
@@ -280,12 +263,8 @@ contract PendleVotingControllerUpg is PendleMsgSenderAppUpg, VotingControllerSto
|
|
|
280
263
|
}
|
|
281
264
|
}
|
|
282
265
|
|
|
283
|
-
function
|
|
284
|
-
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
function setRemovePoolHelper(address _helper) public onlyOwner {
|
|
288
|
-
removePoolHelper = _helper;
|
|
266
|
+
function setOwnerHelper(address _helper) public onlyOwner {
|
|
267
|
+
ownerHelper = _helper;
|
|
289
268
|
}
|
|
290
269
|
|
|
291
270
|
//solhint-disable-next-line
|
|
@@ -73,10 +73,9 @@ abstract contract VotingControllerStorageUpg is IPVotingController {
|
|
|
73
73
|
// [user][pool] => checkpoint
|
|
74
74
|
mapping(address => mapping(address => Checkpoints.History)) internal __dep_userPoolHistory;
|
|
75
75
|
|
|
76
|
-
address public
|
|
77
|
-
address public removePoolHelper;
|
|
76
|
+
address public ownerHelper;
|
|
78
77
|
|
|
79
|
-
uint256[
|
|
78
|
+
uint256[99] private __gap;
|
|
80
79
|
|
|
81
80
|
constructor(address _vePendle) {
|
|
82
81
|
vePendle = IPVeToken(_vePendle);
|
|
@@ -12,7 +12,7 @@ import "../libraries/Errors.sol";
|
|
|
12
12
|
import "../libraries/BoringOwnableUpgradeable.sol";
|
|
13
13
|
import "@openzeppelin/contracts/security/Pausable.sol";
|
|
14
14
|
|
|
15
|
-
abstract contract
|
|
15
|
+
abstract contract SYBaseUpg is IStandardizedYield, PendleERC20Upg, TokenHelper, BoringOwnableUpgradeable, Pausable {
|
|
16
16
|
using PMath for uint256;
|
|
17
17
|
|
|
18
18
|
address public immutable yieldToken;
|
|
@@ -15,7 +15,7 @@ contract PendleGlpSY is SYBaseWithRewardsUpg, GLPPreviewHelper {
|
|
|
15
15
|
address public immutable stakedGlp;
|
|
16
16
|
address public immutable rewardRouter;
|
|
17
17
|
address public immutable glpRouter;
|
|
18
|
-
address public immutable glpManager
|
|
18
|
+
address public immutable glpManager;
|
|
19
19
|
address public immutable weth;
|
|
20
20
|
|
|
21
21
|
constructor(
|
|
@@ -31,6 +31,7 @@ contract PendleGlpSY is SYBaseWithRewardsUpg, GLPPreviewHelper {
|
|
|
31
31
|
stakedGlp = _stakedGlp;
|
|
32
32
|
rewardRouter = _rewardRouter;
|
|
33
33
|
glpRouter = _glpRouter;
|
|
34
|
+
glpManager = IRewardRouterV2(glpRouter).glpManager();
|
|
34
35
|
weth = IRewardRouterV2(glpRouter).weth();
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";
|
|
5
|
+
|
|
6
|
+
enum PendleOracleType {
|
|
7
|
+
PT_TO_SY,
|
|
8
|
+
PT_TO_ASSET,
|
|
9
|
+
YT_TO_SY,
|
|
10
|
+
YT_TO_ASSET,
|
|
11
|
+
LP_TO_SY,
|
|
12
|
+
LP_TO_ASSET
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface IPChainlinkOracle is AggregatorV3Interface {}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./IPChainlinkOracle.sol";
|
|
5
|
+
|
|
6
|
+
interface IPChainlinkOracleFactory {
|
|
7
|
+
event OracleCreated(
|
|
8
|
+
address indexed market,
|
|
9
|
+
uint16 twapDuration,
|
|
10
|
+
PendleOracleType baseOracleType,
|
|
11
|
+
address indexed oracle,
|
|
12
|
+
bytes32 oracleId
|
|
13
|
+
);
|
|
14
|
+
event OracleWithQuoteCreated(
|
|
15
|
+
address indexed market,
|
|
16
|
+
uint16 twapDuration,
|
|
17
|
+
PendleOracleType baseOracleType,
|
|
18
|
+
address indexed quoteOracle,
|
|
19
|
+
address indexed oracle,
|
|
20
|
+
bytes32 oracleId
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol";
|
|
5
|
+
|
|
6
|
+
interface IPChainlinkOracleWithQuote is AggregatorV2V3Interface {
|
|
7
|
+
function quoteOracle() external view returns (address);
|
|
8
|
+
}
|
|
@@ -254,9 +254,4 @@ library SDKErrorsDirectory {
|
|
|
254
254
|
error InvalidTimestamp();
|
|
255
255
|
error InvalidWithdrawalFee();
|
|
256
256
|
error InvalidTotalSupply();
|
|
257
|
-
error OperationNotAllowed();
|
|
258
|
-
error WOMBAT_COV_RATIO_LIMIT_EXCEEDED();
|
|
259
|
-
error NotEnoughLiquidity();
|
|
260
|
-
error InvalidAmountToDeposit();
|
|
261
|
-
error TellerWithMultiAssetSupport__AssetNotSupported();
|
|
262
257
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
|
|
4
|
+
import "./PendleChainlinkOracleBase.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @dev The round data returned from this contract will follow:
|
|
8
|
+
* - There will be only one round (roundId=0)
|
|
9
|
+
* - startedAt, updatedAt will always be 0
|
|
10
|
+
*/
|
|
11
|
+
contract PendleChainlinkOracle is PendleChainlinkOracleBase {
|
|
12
|
+
constructor(
|
|
13
|
+
address _market,
|
|
14
|
+
uint16 _twapDuration,
|
|
15
|
+
PendleOracleType _baseOracleType
|
|
16
|
+
) PendleChainlinkOracleBase(_market, _twapDuration, _baseOracleType) {}
|
|
17
|
+
|
|
18
|
+
function _getFinalPrice() internal view override returns (int256) {
|
|
19
|
+
return _getPendleTokenPrice();
|
|
20
|
+
}
|
|
21
|
+
}
|