@ensuro/core 1.2.5 → 2.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +141 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +112 -315
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +34 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +32 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +23 -191
  12. package/build/contracts/RiskModule.sol/RiskModule.json +94 -302
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +142 -325
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -273
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +14 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +31 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -723
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -546
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1036
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -173
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -0,0 +1,92 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PolicyPoolMockForward",
4
+ "sourceName": "contracts/mocks/PolicyPoolMock.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "forwardTo",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "contract IERC20Metadata",
15
+ "name": "currency_",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "contract IPolicyPoolConfig",
20
+ "name": "config_",
21
+ "type": "address"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "stateMutability": "payable",
29
+ "type": "fallback"
30
+ },
31
+ {
32
+ "inputs": [],
33
+ "name": "MAX_INT",
34
+ "outputs": [
35
+ {
36
+ "internalType": "uint256",
37
+ "name": "",
38
+ "type": "uint256"
39
+ }
40
+ ],
41
+ "stateMutability": "view",
42
+ "type": "function"
43
+ },
44
+ {
45
+ "inputs": [],
46
+ "name": "config",
47
+ "outputs": [
48
+ {
49
+ "internalType": "contract IPolicyPoolConfig",
50
+ "name": "",
51
+ "type": "address"
52
+ }
53
+ ],
54
+ "stateMutability": "view",
55
+ "type": "function"
56
+ },
57
+ {
58
+ "inputs": [],
59
+ "name": "currency",
60
+ "outputs": [
61
+ {
62
+ "internalType": "contract IERC20Metadata",
63
+ "name": "",
64
+ "type": "address"
65
+ }
66
+ ],
67
+ "stateMutability": "view",
68
+ "type": "function"
69
+ },
70
+ {
71
+ "inputs": [
72
+ {
73
+ "internalType": "address",
74
+ "name": "forwardTo",
75
+ "type": "address"
76
+ }
77
+ ],
78
+ "name": "setForwardTo",
79
+ "outputs": [],
80
+ "stateMutability": "nonpayable",
81
+ "type": "function"
82
+ },
83
+ {
84
+ "stateMutability": "payable",
85
+ "type": "receive"
86
+ }
87
+ ],
88
+ "bytecode": "0x608060405234801561001057600080fd5b506040516102e83803806102e883398101604081905261002f916100bd565b600080546001600160a01b038086166001600160a01b031992831617835560018054868316908416179055600280549185169190921681179091556040805163948cb71960e01b81529051919263948cb7199260048084019382900301818387803b15801561009d57600080fd5b505af11580156100b1573d6000803e3d6000fd5b50505050505050610122565b6000806000606084860312156100d257600080fd5b83516100dd8161010a565b60208501519093506100ee8161010a565b60408501519092506100ff8161010a565b809150509250925092565b6001600160a01b038116811461011f57600080fd5b50565b6101b7806101316000396000f3fe6080604052600436106100435760003560e01c8063098d32281461005a57806379502c5514610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea2646970667358221220a0f5a707c408dc3a98458a90a134bf004fdfc38c8b114bc16ec7ea9508f5be6e64736f6c63430008060033",
89
+ "deployedBytecode": "0x6080604052600436106100435760003560e01c8063098d32281461005a57806379502c5514610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea2646970667358221220a0f5a707c408dc3a98458a90a134bf004fdfc38c8b114bc16ec7ea9508f5be6e64736f6c63430008060033",
90
+ "linkReferences": {},
91
+ "deployedLinkReferences": {}
92
+ }
@@ -0,0 +1,343 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TestCurrency",
4
+ "sourceName": "contracts/mocks/TestCurrency.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "name_",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "symbol_",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "initialSupply",
21
+ "type": "uint256"
22
+ },
23
+ {
24
+ "internalType": "uint8",
25
+ "name": "decimals_",
26
+ "type": "uint8"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "anonymous": false,
34
+ "inputs": [
35
+ {
36
+ "indexed": true,
37
+ "internalType": "address",
38
+ "name": "owner",
39
+ "type": "address"
40
+ },
41
+ {
42
+ "indexed": true,
43
+ "internalType": "address",
44
+ "name": "spender",
45
+ "type": "address"
46
+ },
47
+ {
48
+ "indexed": false,
49
+ "internalType": "uint256",
50
+ "name": "value",
51
+ "type": "uint256"
52
+ }
53
+ ],
54
+ "name": "Approval",
55
+ "type": "event"
56
+ },
57
+ {
58
+ "anonymous": false,
59
+ "inputs": [
60
+ {
61
+ "indexed": true,
62
+ "internalType": "address",
63
+ "name": "from",
64
+ "type": "address"
65
+ },
66
+ {
67
+ "indexed": true,
68
+ "internalType": "address",
69
+ "name": "to",
70
+ "type": "address"
71
+ },
72
+ {
73
+ "indexed": false,
74
+ "internalType": "uint256",
75
+ "name": "value",
76
+ "type": "uint256"
77
+ }
78
+ ],
79
+ "name": "Transfer",
80
+ "type": "event"
81
+ },
82
+ {
83
+ "inputs": [
84
+ {
85
+ "internalType": "address",
86
+ "name": "owner",
87
+ "type": "address"
88
+ },
89
+ {
90
+ "internalType": "address",
91
+ "name": "spender",
92
+ "type": "address"
93
+ }
94
+ ],
95
+ "name": "allowance",
96
+ "outputs": [
97
+ {
98
+ "internalType": "uint256",
99
+ "name": "",
100
+ "type": "uint256"
101
+ }
102
+ ],
103
+ "stateMutability": "view",
104
+ "type": "function"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "address",
110
+ "name": "spender",
111
+ "type": "address"
112
+ },
113
+ {
114
+ "internalType": "uint256",
115
+ "name": "amount",
116
+ "type": "uint256"
117
+ }
118
+ ],
119
+ "name": "approve",
120
+ "outputs": [
121
+ {
122
+ "internalType": "bool",
123
+ "name": "",
124
+ "type": "bool"
125
+ }
126
+ ],
127
+ "stateMutability": "nonpayable",
128
+ "type": "function"
129
+ },
130
+ {
131
+ "inputs": [
132
+ {
133
+ "internalType": "address",
134
+ "name": "account",
135
+ "type": "address"
136
+ }
137
+ ],
138
+ "name": "balanceOf",
139
+ "outputs": [
140
+ {
141
+ "internalType": "uint256",
142
+ "name": "",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "stateMutability": "view",
147
+ "type": "function"
148
+ },
149
+ {
150
+ "inputs": [
151
+ {
152
+ "internalType": "address",
153
+ "name": "recipient",
154
+ "type": "address"
155
+ },
156
+ {
157
+ "internalType": "uint256",
158
+ "name": "amount",
159
+ "type": "uint256"
160
+ }
161
+ ],
162
+ "name": "burn",
163
+ "outputs": [],
164
+ "stateMutability": "nonpayable",
165
+ "type": "function"
166
+ },
167
+ {
168
+ "inputs": [],
169
+ "name": "decimals",
170
+ "outputs": [
171
+ {
172
+ "internalType": "uint8",
173
+ "name": "",
174
+ "type": "uint8"
175
+ }
176
+ ],
177
+ "stateMutability": "view",
178
+ "type": "function"
179
+ },
180
+ {
181
+ "inputs": [
182
+ {
183
+ "internalType": "address",
184
+ "name": "spender",
185
+ "type": "address"
186
+ },
187
+ {
188
+ "internalType": "uint256",
189
+ "name": "subtractedValue",
190
+ "type": "uint256"
191
+ }
192
+ ],
193
+ "name": "decreaseAllowance",
194
+ "outputs": [
195
+ {
196
+ "internalType": "bool",
197
+ "name": "",
198
+ "type": "bool"
199
+ }
200
+ ],
201
+ "stateMutability": "nonpayable",
202
+ "type": "function"
203
+ },
204
+ {
205
+ "inputs": [
206
+ {
207
+ "internalType": "address",
208
+ "name": "spender",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "internalType": "uint256",
213
+ "name": "addedValue",
214
+ "type": "uint256"
215
+ }
216
+ ],
217
+ "name": "increaseAllowance",
218
+ "outputs": [
219
+ {
220
+ "internalType": "bool",
221
+ "name": "",
222
+ "type": "bool"
223
+ }
224
+ ],
225
+ "stateMutability": "nonpayable",
226
+ "type": "function"
227
+ },
228
+ {
229
+ "inputs": [
230
+ {
231
+ "internalType": "address",
232
+ "name": "recipient",
233
+ "type": "address"
234
+ },
235
+ {
236
+ "internalType": "uint256",
237
+ "name": "amount",
238
+ "type": "uint256"
239
+ }
240
+ ],
241
+ "name": "mint",
242
+ "outputs": [],
243
+ "stateMutability": "nonpayable",
244
+ "type": "function"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "name",
249
+ "outputs": [
250
+ {
251
+ "internalType": "string",
252
+ "name": "",
253
+ "type": "string"
254
+ }
255
+ ],
256
+ "stateMutability": "view",
257
+ "type": "function"
258
+ },
259
+ {
260
+ "inputs": [],
261
+ "name": "symbol",
262
+ "outputs": [
263
+ {
264
+ "internalType": "string",
265
+ "name": "",
266
+ "type": "string"
267
+ }
268
+ ],
269
+ "stateMutability": "view",
270
+ "type": "function"
271
+ },
272
+ {
273
+ "inputs": [],
274
+ "name": "totalSupply",
275
+ "outputs": [
276
+ {
277
+ "internalType": "uint256",
278
+ "name": "",
279
+ "type": "uint256"
280
+ }
281
+ ],
282
+ "stateMutability": "view",
283
+ "type": "function"
284
+ },
285
+ {
286
+ "inputs": [
287
+ {
288
+ "internalType": "address",
289
+ "name": "to",
290
+ "type": "address"
291
+ },
292
+ {
293
+ "internalType": "uint256",
294
+ "name": "amount",
295
+ "type": "uint256"
296
+ }
297
+ ],
298
+ "name": "transfer",
299
+ "outputs": [
300
+ {
301
+ "internalType": "bool",
302
+ "name": "",
303
+ "type": "bool"
304
+ }
305
+ ],
306
+ "stateMutability": "nonpayable",
307
+ "type": "function"
308
+ },
309
+ {
310
+ "inputs": [
311
+ {
312
+ "internalType": "address",
313
+ "name": "from",
314
+ "type": "address"
315
+ },
316
+ {
317
+ "internalType": "address",
318
+ "name": "to",
319
+ "type": "address"
320
+ },
321
+ {
322
+ "internalType": "uint256",
323
+ "name": "amount",
324
+ "type": "uint256"
325
+ }
326
+ ],
327
+ "name": "transferFrom",
328
+ "outputs": [
329
+ {
330
+ "internalType": "bool",
331
+ "name": "",
332
+ "type": "bool"
333
+ }
334
+ ],
335
+ "stateMutability": "nonpayable",
336
+ "type": "function"
337
+ }
338
+ ],
339
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162000f7a38038062000f7a833981016040819052620000349162000300565b8351849084906200004d906003906020850190620001a3565b50805162000063906004906020840190620001a3565b5050600580546001600160a01b031916339081179091557fff0000000000000000000000000000000000000000000000000000000000000060f884901b16608052620000b1915083620000bb565b5050505062000407565b6001600160a01b038216620001165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200012a91906200038d565b90915550506001600160a01b03821660009081526020819052604081208054839290620001599084906200038d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001b190620003b4565b90600052602060002090601f016020900481019282620001d5576000855562000220565b82601f10620001f057805160ff191683800117855562000220565b8280016001018555821562000220579182015b828111156200022057825182559160200191906001019062000203565b506200022e92915062000232565b5090565b5b808211156200022e576000815560010162000233565b600082601f8301126200025b57600080fd5b81516001600160401b0380821115620002785762000278620003f1565b604051601f8301601f19908116603f01168101908282118183101715620002a357620002a3620003f1565b81604052838152602092508683858801011115620002c057600080fd5b600091505b83821015620002e45785820183015181830184015290820190620002c5565b83821115620002f65760008385830101525b9695505050505050565b600080600080608085870312156200031757600080fd5b84516001600160401b03808211156200032f57600080fd5b6200033d8883890162000249565b955060208701519150808211156200035457600080fd5b50620003638782880162000249565b93505060408501519150606085015160ff811681146200038257600080fd5b939692955090935050565b60008219821115620003af57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620003c957607f821691505b60208210811415620003eb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c610b546200042660003960006101410152610b546000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146101c4578063a457c2d7146101d7578063a9059cbb146101ea578063dd62ed3e146101fd57600080fd5b806340c10f191461017e57806370a082311461019357806395d89b41146101bc57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461016b575b600080fd5b6100dc610210565b6040516100e99190610a49565b60405180910390f35b610105610100366004610a1f565b6102a2565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046109e3565b6102ba565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100e9565b610105610179366004610a1f565b6102de565b61019161018c366004610a1f565b610300565b005b6101196101a136600461098e565b6001600160a01b031660009081526020819052604090205490565b6100dc61030e565b6101916101d2366004610a1f565b61031d565b6101056101e5366004610a1f565b610327565b6101056101f8366004610a1f565b6103a7565b61011961020b3660046109b0565b6103b5565b60606003805461021f90610acd565b80601f016020809104026020016040519081016040528092919081815260200182805461024b90610acd565b80156102985780601f1061026d57610100808354040283529160200191610298565b820191906000526020600020905b81548152906001019060200180831161027b57829003601f168201915b5050505050905090565b6000336102b08185856103e0565b5060019392505050565b6000336102c8858285610505565b6102d385858561057f565b506001949350505050565b6000336102b08185856102f183836103b5565b6102fb9190610a9e565b6103e0565b61030a828261074d565b5050565b60606004805461021f90610acd565b61030a828261082c565b6000338161033582866103b5565b90508381101561039a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102d382868684036103e0565b6000336102b081858561057f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610391565b6001600160a01b0382166104a35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610391565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061051184846103b5565b90506000198114610579578181101561056c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610391565b61057984848484036103e0565b50505050565b6001600160a01b0383166105e35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610391565b6001600160a01b0382166106455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610391565b6001600160a01b038316600090815260208190526040902054818110156106bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610391565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106f4908490610a9e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161074091815260200190565b60405180910390a3610579565b6001600160a01b0382166107a35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610391565b80600260008282546107b59190610a9e565b90915550506001600160a01b038216600090815260208190526040812080548392906107e2908490610a9e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661088c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610391565b6001600160a01b038216600090815260208190526040902054818110156109005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610391565b6001600160a01b038316600090815260208190526040812083830390556002805484929061092f908490610ab6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104f8565b80356001600160a01b038116811461098957600080fd5b919050565b6000602082840312156109a057600080fd5b6109a982610972565b9392505050565b600080604083850312156109c357600080fd5b6109cc83610972565b91506109da60208401610972565b90509250929050565b6000806000606084860312156109f857600080fd5b610a0184610972565b9250610a0f60208501610972565b9150604084013590509250925092565b60008060408385031215610a3257600080fd5b610a3b83610972565b946020939093013593505050565b600060208083528351808285015260005b81811015610a7657858101830151858201604001528201610a5a565b81811115610a88576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610ab157610ab1610b08565b500190565b600082821015610ac857610ac8610b08565b500390565b600181811c90821680610ae157607f821691505b60208210811415610b0257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212204a383f142c9fcfef1d9efc6568c8a4fadfee6a4a5eecd62e331818212ef57f6764736f6c63430008060033",
340
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146101c4578063a457c2d7146101d7578063a9059cbb146101ea578063dd62ed3e146101fd57600080fd5b806340c10f191461017e57806370a082311461019357806395d89b41146101bc57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461016b575b600080fd5b6100dc610210565b6040516100e99190610a49565b60405180910390f35b610105610100366004610a1f565b6102a2565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046109e3565b6102ba565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100e9565b610105610179366004610a1f565b6102de565b61019161018c366004610a1f565b610300565b005b6101196101a136600461098e565b6001600160a01b031660009081526020819052604090205490565b6100dc61030e565b6101916101d2366004610a1f565b61031d565b6101056101e5366004610a1f565b610327565b6101056101f8366004610a1f565b6103a7565b61011961020b3660046109b0565b6103b5565b60606003805461021f90610acd565b80601f016020809104026020016040519081016040528092919081815260200182805461024b90610acd565b80156102985780601f1061026d57610100808354040283529160200191610298565b820191906000526020600020905b81548152906001019060200180831161027b57829003601f168201915b5050505050905090565b6000336102b08185856103e0565b5060019392505050565b6000336102c8858285610505565b6102d385858561057f565b506001949350505050565b6000336102b08185856102f183836103b5565b6102fb9190610a9e565b6103e0565b61030a828261074d565b5050565b60606004805461021f90610acd565b61030a828261082c565b6000338161033582866103b5565b90508381101561039a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102d382868684036103e0565b6000336102b081858561057f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610391565b6001600160a01b0382166104a35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610391565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061051184846103b5565b90506000198114610579578181101561056c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610391565b61057984848484036103e0565b50505050565b6001600160a01b0383166105e35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610391565b6001600160a01b0382166106455760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610391565b6001600160a01b038316600090815260208190526040902054818110156106bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610391565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106f4908490610a9e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161074091815260200190565b60405180910390a3610579565b6001600160a01b0382166107a35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610391565b80600260008282546107b59190610a9e565b90915550506001600160a01b038216600090815260208190526040812080548392906107e2908490610a9e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661088c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610391565b6001600160a01b038216600090815260208190526040902054818110156109005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610391565b6001600160a01b038316600090815260208190526040812083830390556002805484929061092f908490610ab6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104f8565b80356001600160a01b038116811461098957600080fd5b919050565b6000602082840312156109a057600080fd5b6109a982610972565b9392505050565b600080604083850312156109c357600080fd5b6109cc83610972565b91506109da60208401610972565b90509250929050565b6000806000606084860312156109f857600080fd5b610a0184610972565b9250610a0f60208501610972565b9150604084013590509250925092565b60008060408385031215610a3257600080fd5b610a3b83610972565b946020939093013593505050565b600060208083528351808285015260005b81811015610a7657858101830151858201604001528201610a5a565b81811115610a88576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610ab157610ab1610b08565b500190565b600082821015610ac857610ac8610b08565b500390565b600181811c90821680610ae157607f821691505b60208210811415610b0257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212204a383f142c9fcfef1d9efc6568c8a4fadfee6a4a5eecd62e331818212ef57f6764736f6c63430008060033",
341
+ "linkReferences": {},
342
+ "deployedLinkReferences": {}
343
+ }