diff --git a/.env.example b/.env.example index 6a1581e..3d24a7d 100644 --- a/.env.example +++ b/.env.example @@ -7,16 +7,20 @@ IS_TEST=true # Collaterals WRAPPED_NATIVE_TOKEN_ADDRESS="0x5555555555555555555555555555555555555555" +# Core Addresses +GENERAL_MANAGER_ADDRESS= +PYTH_ADDRESS= + # Rollover Vault Parameters ROLLOVER_VAULT_NAME="Rollover Vault" ROLLOVER_VAULT_SYMBOL="RLV" -ROLLOVER_VAULT_DECIMALS=26 -ROLLOVER_VAULT_DECIMALS_OFFSET=18 +ROLLOVER_VAULT_DECIMALS=24 # Must be 18 + Offset +ROLLOVER_VAULT_DECIMALS_OFFSET=6 ROLLOVER_VAULT_ADMIN_ADDRESS= # Fulfillment Vault Parameters FULFILLMENT_VAULT_NAME="Fulfillment Vault" FULFILLMENT_VAULT_SYMBOL="FLV" -FULFILLMENT_VAULT_DECIMALS=26 -FULFILLMENT_VAULT_DECIMALS_OFFSET=18 +FULFILLMENT_VAULT_DECIMALS=24 # Must be 18 + Offset +FULFILLMENT_VAULT_DECIMALS_OFFSET=6 FULFILLMENT_VAULT_ADMIN_ADDRESS= \ No newline at end of file diff --git a/addresses/addresses-999.json b/addresses/addresses-999.json index 183a940..a0a7d7d 100644 --- a/addresses/addresses-999.json +++ b/addresses/addresses-999.json @@ -1,5 +1,5 @@ { - "fulfillmentVaultAddress": "0x3D177625F3AC203C5AeDFE5faD12c8f66B198436", - "rolloverVaultAddress": "0x3f93fabBf59B808cC47487dD211dD782020C98dC", - "routerAddress": "0x1765d303bA825aD22a3DCBcDc8cC540575E0B9f6" + "fulfillmentVaultAddress": "0xB8DE4aB6C65e274630F5279f74eB69b66327CE50", + "rolloverVaultAddress": "0x8ecF2c64F77A09042daB6A2DB45E63A4b0eAD3bb", + "routerAddress": "0x3d36541d8C432B3c53e3D9F3d1940f2e3cCAA60c" } \ No newline at end of file diff --git a/broadcast/DeployAll.s.sol/999/run-1765522548.json b/broadcast/DeployAll.s.sol/999/run-1765522548.json new file mode 100644 index 0000000..46ab1f9 --- /dev/null +++ b/broadcast/DeployAll.s.sol/999/run-1765522548.json @@ -0,0 +1,712 @@ +{ + "transactions": [ + { + "hash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionType": "CREATE", + "contractName": "Router", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "function": null, + "arguments": [ + "0x5555555555555555555555555555555555555555", + "0xDF8023679fE964982bDb93956f96B01c25f33Da5", + "0x0000000000000000000000000000000000000000", + "0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x479cbe", + "value": "0x0", + "input": "0x610160604052348015610010575f5ffd5b5060405161446738038061446783398101604081905261002f916103ad565b6001600160a01b0380851660e052838116608081905283821660a05290821660c0526040805163311176d760e01b8152905163311176d7916004808201926020929091908290030181865afa15801561008a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906103fe565b6001600160a01b0316610100816001600160a01b031681525050826001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610104573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012891906103fe565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a291906103fe565b6001600160a01b039081166101405260e05160805160405163095ea7b360e01b815290831660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156101fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f919061041e565b50610100516101205160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610274573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610298919061041e565b506101205160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156102ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610310919061041e565b506101005160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610364573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610388919061041e565b505050505061043d565b80516001600160a01b03811681146103a8575f5ffd5b919050565b5f5f5f5f608085870312156103c0575f5ffd5b6103c985610392565b93506103d760208601610392565b92506103e560408601610392565b91506103f360608601610392565b905092959194509250565b5f6020828403121561040e575f5ffd5b61041782610392565b9392505050565b5f6020828403121561042e575f5ffd5b81518015158114610417575f5ffd5b60805160a05160c05160e051610100516101205161014051613e3c61062b5f395f818161026f01528181612c2701528181612cd30152612d7101525f81816103f10152818161082b0152818161091f01528181610a2c01528181610ac901528181610b3b01528181610b7401528181610dcd01528181611184015281816112bc01528181611d1401528181611f12015281816120060152818161270901528181612745015281816127d601526128ac01525f818161023c01528181610a8b01528181610ba301528181610bc801528181610c7301528181610ce901528181610d57015281816110b40152818161112a015281816111e90152818161128a015281816117920152818161180e015281816120c30152818161219d01528181612246015281816122d601528181612371015281816127a50152818161287d01528181612a8501528181612b120152612bc701525f81816101a3015281816129c001526129fb01525f81816104240152818161166001526116ef01525f81816102b6015281816122a7015281816123a0015261242301525f818161034d0152818161085f01528181610fc6015281816114b50152818161154501528181611a1301528181611b1c01528181611bd101528181611dfa01528181611f460152818161256801526126600152613e3c5ff3fe608060405260043610610140575f3560e01c80637aea9eab116100bb578063ca38e8cc11610071578063ea81deb411610057578063ea81deb4146103c1578063eb91d0f5146103e0578063f98d06f014610413575f5ffd5b8063ca38e8cc1461038e578063e2230a42146103ad575f5ffd5b806389d7f33c116100a157806389d7f33c1461031d57806396ebfb891461033c578063b500cf771461036f575f5ffd5b80637aea9eab146102f757806381f139f41461030a575f5ffd5b8063311176d71161011057806339b90b99116100f657806339b90b991461029157806343d2c350146102a557806362355638146102d8575f5ffd5b8063311176d71461022b57806331d31efb1461025e575f5ffd5b806307ecbf3c1461014b57806317fcb39b1461019257806321679a2e146101dd578063248391ff146101fe575f5ffd5b3661014757005b5f5ffd5b348015610156575f5ffd5b5061016a610165366004613093565b610446565b6040805194855260208501939093529183015260ff1660608201526080015b60405180910390f35b34801561019d575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610189565b3480156101e8575f5ffd5b506101fc6101f73660046130ef565b610824565b005b348015610209575f5ffd5b5061021d610218366004613121565b610a09565b604051908152602001610189565b348015610236575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b348015610269575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c575f5ffd5b506101fc610dca565b3480156102b0575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101fc6102f2366004613121565b611071565b61016a610305366004613177565b6113af565b61016a6103183660046131dd565b611659565b348015610328575f5ffd5b506101fc6103373660046132a1565b61178b565b348015610347575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561037a575f5ffd5b506101fc6103893660046132d3565b611a10565b348015610399575f5ffd5b506101fc6103a83660046130ef565b611f0b565b3480156103b8575f5ffd5b506101fc6120c0565b3480156103cc575f5ffd5b506101fc6103db366004613312565b61223f565b3480156103eb575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561041e575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b5f808080610454858061333c565b610465906080810190606001613378565b156106b6575f5b610476868061333c565b610484906040810190613393565b90508110156106b057610497868061333c565b6104a5906040810190613393565b828181106104b5576104b56133fe565b90506020020160208101906104ca919061342b565b6001600160a01b031663c686692260026104e4898061333c565b6104ee9080613393565b858181106104fe576104fe6133fe565b9050602002013560016105119190613473565b61051b91906134b3565b6040518263ffffffff1660e01b815260040161053991815260200190565b602060405180830381865afa158015610554573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057891906134c6565b6105829086613473565b94505f806105d561059960608a0160408b0161342b565b60026105a58b8061333c565b6105af9080613393565b878181106105bf576105bf6133fe565b905060200201356105d091906134b3565b61252a565b945091508390506105e6888061333c565b6105f4906040810190613393565b84818110610604576106046133fe565b9050602002016020810190610619919061342b565b6001600160a01b031663c6866922836040518263ffffffff1660e01b815260040161064691815260200190565b602060405180830381865afa158015610661573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068591906134c6565b6106908360026134dd565b61069a91906134f4565b6106a49086613473565b9450505060010161046c565b5061081d565b5f5b6106c2868061333c565b6106d0906040810190613393565b905081101561081b575f8061071e6106ee60608a0160408b0161342b565b6106f88a8061333c565b6107029080613393565b86818110610712576107126133fe565b9050602002013561252a565b909250905061072d8286613473565b945092508261073c888061333c565b61074a906040810190613393565b8481811061075a5761075a6133fe565b905060200201602081019061076f919061342b565b6001600160a01b031663c68669226107886002856134b3565b6040518263ffffffff1660e01b81526004016107a691815260200190565b602060405180830381865afa1580156107c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e591906134c6565b6107ef9087613473565b95506107fc600283613507565b6001036108115761080e600187613473565b95505b50506001016106b8565b505b9193509193565b5f610850847f000000000000000000000000000000000000000000000000000000000000000084610a09565b905061085c8482612707565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd9190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af1158015610967573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b919061354b565b506040517ff9b1a9ad00000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b0382169063f9b1a9ad906044015b5f604051808303815f87803b1580156109ec575f5ffd5b505af11580156109fe573d5f5f3e3d5ffd5b505050505050505050565b5f826001600160a01b0316846001600160a01b031603610a2a575080610dc3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610b39576040517f4af218260000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03818116600484015260248301859052610b329286917f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401602060405180830381865afa158015610b0e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021891906134c6565b9050610dc3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610c71577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396846de07f0000000000000000000000000000000000000000000000000000000000000000610bed877f000000000000000000000000000000000000000000000000000000000000000087610a09565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381865afa158015610c4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3291906134c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610d18576040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401610c32565b6040517f96846de00000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906396846de090604401602060405180830381865afa158015610d9c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc091906134c6565b90505b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa158015610e26573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4d91908101906135ee565b90505f5b815181101561106d57818181518110610e6c57610e6c6133fe565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80294d930000000000000000000000000000000000000000000000000000000060048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa158015610ef3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f17919061354b565b15611065575f828281518110610f2f57610f2f6133fe565b60200260200101516001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f969190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192509082169063095ea7b3906044016020604051808303815f875af115801561103e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611062919061354b565b50505b600101610e51565b5050565b816001600160a01b0316836001600160a01b03160361108f57505050565b805f0361109b57505050565b6110b2335b6001600160a01b038516903084612909565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611182576040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015f604051808303815f87803b15801561116b575f5ffd5b505af115801561117d573d5f5f3e3d5ffd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611316576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611236573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125a91906134c6565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906347e7ef24906044015f604051808303815f87803b1580156112ff575f5ffd5b505af1158015611311573d5f5f3e3d5ffd5b505050505b6113aa336040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611375573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139991906134c6565b6001600160a01b0385169190612985565b505050565b5f5f5f5f6113bc87610446565b92965090945092509050831561144f5784841115611435576113e4606088016040890161342b565b6040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052604481018690526064015b60405180910390fd5b61144f6114486060890160408a0161342b565b85886129b6565b82156114b257848311156114a8576040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b0389166004820152602481018490526044810186905260640161142c565b6114b28884612a83565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf42ffa478a6040518363ffffffff1660e01b8152600401611500919061388a565b60206040518083038185885af115801561151c573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061154191906134c6565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c39190613525565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015611637575f5ffd5b505af1158015611649573d5f5f3e3d5ffd5b5050505050945094509450949050565b5f5f5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d47eed458c8c6040518363ffffffff1660e01b81526004016116ac92919061397c565b602060405180830381865afa1580156116c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906134c6565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef9e5e28828d8d6040518463ffffffff1660e01b815260040161173c92919061397c565b5f604051808303818588803b158015611753575f5ffd5b505af1158015611765573d5f5f3e3d5ffd5b5050505050611776898989896113af565b929e919d509b50909950975050505050505050565b5f6117b7837f000000000000000000000000000000000000000000000000000000000000000084610a09565b90505f6117c385612bf6565b90506117cf8483612a83565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015611854573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611878919061354b565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063b6b55f25906024016020604051808303815f875af11580156118d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fa91906134c6565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611960573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198491906134c6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156119e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061354b565b505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a919190613525565b6040517f581a7ab0000000000000000000000000000000000000000000000000000000008152600481018590529091505f906001600160a01b0383169063581a7ab0906024016102c060405180830381865afa158015611af3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190613a3c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e78bede836040518263ffffffff1660e01b8152600401611b669190613bfb565b602060405180830381865afa158015611b81573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba59190613d83565b61ffff1690505f611bc3611bb884612dea565b836127106001612e41565b9050611bcf8782612707565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4f9190613525565b6001600160a01b03166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152306024820152604481018990526064015f604051808303815f87803b158015611cc1575f5ffd5b505af1158015611cd3573d5f5f3e3d5ffd5b50506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303815f875af1158015611d5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d80919061354b565b506040517f8fb702200000000000000000000000000000000000000000000000000000000081526004810187905260ff861660248201526001600160a01b03851690638fb70220906044015f604051808303815f87803b158015611de2575f5ffd5b505af1158015611df4573d5f5f3e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e789190613525565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018990526064015f604051808303815f87803b158015611eec575f5ffd5b505af1158015611efe573d5f5f3e3d5ffd5b5050505050505050505050565b5f611f37847f000000000000000000000000000000000000000000000000000000000000000084610a09565b9050611f438482612707565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc49190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af115801561204e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612072919061354b565b506040517f40b369c100000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b038216906340b369c1906044016109d5565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa15801561211c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261214391908101906135ee565b90505f5b815181101561106d57818181518110612162576121626133fe565b60209081029190910101516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015612212573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612236919061354b565b50600101612147565b5f61226b837f000000000000000000000000000000000000000000000000000000000000000084610a09565b90506122778382612a83565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af115801561231c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612340919061354b565b506040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015f604051808303815f87803b1580156123e1575f5ffd5b505af11580156123f3573d5f5f3e3d5ffd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063a9059cbb9150339083906370a0823190602401602060405180830381865afa15801561247c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124a091906134c6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612500573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612524919061354b565b50505050565b6040517f013745180000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f91829182917f000000000000000000000000000000000000000000000000000000000000000090911690630137451890602401602060405180830381865afa1580156125af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d39190613525565b6040517f9097548d000000000000000000000000000000000000000000000000000000008152600481018690529091506001600160a01b03821690639097548d906024016040805180830381865afa158015612631573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126559190613d9c565b80935081945050505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f43bde6d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126de9190613d83565b90506126fc846126f083612710613dcb565b61ffff16612710612e8c565b935050509250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036127755761106d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316333084612909565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa15801561281d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284191906134c6565b905061284d8382612a83565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015b5f604051808303815f87803b1580156128ee575f5ffd5b505af1158015612900573d5f5f3e3d5ffd5b50505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526125249186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612f3c565b6040516001600160a01b038381166024830152604482018390526113aa91859182169063a9059cbb9060640161293e565b8080156129f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15612a6e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015612a52575f5ffd5b505af1158015612a64573d5f5f3e3d5ffd5b5050505050505050565b6113aa6001600160a01b038416333085612909565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612ad15761106d6001600160a01b038316333084612909565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa158015612b59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7d91906134c6565b9050612b88336110a0565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044016128d7565b6040517f7fe9a7e6000000000000000000000000000000000000000000000000000000008152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637fe9a7e690602401602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c989190613525565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063c3c5a54790602401602060405180830381865afa158015612d1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3e919061354b565b612de5576040517f22fa95c4000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906322fa95c4906024016020604051808303815f875af1158015612dbf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de39190613525565b505b919050565b5f612e0b826101c00151836101a00151612e049190613473565b8390612fc1565b826101800151836101e00151846101600151612e2791906134f4565b612e3191906134f4565b612e3b91906134f4565b92915050565b5f612e6e612e4e8361300b565b8015612e6957505f8480612e6457612e64613486565b868809115b151590565b612e79868686612e8c565b612e839190613473565b95945050505050565b5f5f5f612e998686613037565b91509150815f03612ebd57838181612eb357612eb3613486565b0492505050610dc3565b818411612ed457612ed46003851502601118613072565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f60205f8451602086015f885af180612f5b576040513d5f823e3d81fd5b50505f513d91508115612f72578060011415612f7f565b6001600160a01b0384163b155b15612524576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161142c565b5f8261014001515f03612fd557505f612e3b565b610dc382846101800151856101e00151866101600151612ff591906134f4565b612fff91906134f4565b8561014001515f612e41565b5f600282600381111561302057613020613b95565b61302a9190613de5565b60ff166001149050919050565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f60c08284031215612de3575f5ffd5b5f602082840312156130a3575f5ffd5b813567ffffffffffffffff8111156130b9575f5ffd5b6130c584828501613083565b949350505050565b6001600160a01b03811681146130e1575f5ffd5b50565b8035612de5816130cd565b5f5f5f60608486031215613101575f5ffd5b833561310c816130cd565b95602085013595506040909401359392505050565b5f5f5f60608486031215613133575f5ffd5b833561313e816130cd565b9250602084013561314e816130cd565b929592945050506040919091013590565b80151581146130e1575f5ffd5b8035612de58161315f565b5f5f5f5f6080858703121561318a575f5ffd5b8435613195816130cd565b9350602085013567ffffffffffffffff8111156131b0575f5ffd5b6131bc87828801613083565b93505060408501356131cd8161315f565b9396929550929360600135925050565b5f5f5f5f5f5f60a087890312156131f2575f5ffd5b863567ffffffffffffffff811115613208575f5ffd5b8701601f81018913613218575f5ffd5b803567ffffffffffffffff81111561322e575f5ffd5b8960208260051b8401011115613242575f5ffd5b6020918201975095506132569088016130e4565b9350604087013567ffffffffffffffff811115613271575f5ffd5b61327d89828a01613083565b93505061328c6060880161316c565b95989497509295919493608090920135925050565b5f5f5f606084860312156132b3575f5ffd5b83359250602084013561314e816130cd565b60ff811681146130e1575f5ffd5b5f5f5f606084860312156132e5575f5ffd5b83356132f0816130cd565b9250602084013591506040840135613307816132c5565b809150509250925092565b5f5f60408385031215613323575f5ffd5b823561332e816130cd565b946020939093013593505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261336e575f5ffd5b9190910192915050565b5f60208284031215613388575f5ffd5b8135610dc38161315f565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133c6575f5ffd5b83018035915067ffffffffffffffff8211156133e0575f5ffd5b6020019150600581901b36038213156133f7575f5ffd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561343b575f5ffd5b8135610dc3816130cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612e3b57612e3b613446565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826134c1576134c1613486565b500490565b5f602082840312156134d6575f5ffd5b5051919050565b8082028115828204841417612e3b57612e3b613446565b81810381811115612e3b57612e3b613446565b5f8261351557613515613486565b500690565b8051612de5816130cd565b5f60208284031215613535575f5ffd5b8151610dc3816130cd565b8051612de58161315f565b5f6020828403121561355b575f5ffd5b8151610dc38161315f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102c0810167ffffffffffffffff811182821017156135b7576135b7613566565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156135e6576135e6613566565b604052919050565b5f602082840312156135fe575f5ffd5b815167ffffffffffffffff811115613614575f5ffd5b8201601f81018413613624575f5ffd5b805167ffffffffffffffff81111561363e5761363e613566565b8060051b61364e602082016135bd565b91825260208184018101929081019087841115613669575f5ffd5b6020850194505b838510156136975784519250613685836130cd565b82825260209485019490910190613670565b979650505050505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136d5575f5ffd5b830160208101925035905067ffffffffffffffff8111156136f4575f5ffd5b8060051b36038213156133f7575f5ffd5b8183526020830192505f815f5b84811015613743578135613725816130cd565b6001600160a01b031686526020958601959190910190600101613712565b5093949350505050565b5f61375882836136a2565b60a085528060a08601527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561378e575f5ffd5b60051b808260c08701378401905060208301356137aa816132c5565b60ff1660208501526137bf60408401846136a2565b60c08684030160408701526137d860c084018284613705565b925050506137e86060840161316c565b1515606085015260809283013592909301919091525090565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613834575f5ffd5b830160208101925035905067ffffffffffffffff811115613853575f5ffd5b8036038213156133f7575f5ffd5b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b602081525f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618436030181126138c0575f5ffd5b60c060208401526138d660e0840185830161374d565b90506138e56020850185613801565b601f198584030160408601526138fc838284613861565b9250505061390c604085016130e4565b6001600160a01b038116606085015250613928606085016130e4565b6001600160a01b03811660808501525061394560808501856136a2565b601f198584030160a086015261395c838284613705565b9250505061396c60a0850161316c565b80151560c0850152509392505050565b602080825281018290525f6040600584901b8301810190830185835b868110156139f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08685030183526139d18289613801565b6139dc868284613861565b955050506020928301929190910190600101613998565b50919695505050505050565b8051612de5816132c5565b805161ffff81168114612de5575f5ffd5b805163ffffffff81168114612de5575f5ffd5b805160038110612de5575f5ffd5b5f6102c0828403128015613a4e575f5ffd5b50613a57613593565b82518152613a676020840161351a565b6020820152613a78604084016139ff565b60408201526060838101519082015260808084015190820152613a9d60a0840161351a565b60a0820152613aae60c08401613a0a565b60c0820152613abf60e08401613a0a565b60e0820152613ad16101008401613a1b565b610100820152613ae46101208401613a1b565b6101208201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e0808401519082015261020080840151908201526102208084015190820152613b4f61024084016139ff565b610240820152613b6261026084016139ff565b610260820152613b756102808401613540565b610280820152613b886102a08401613a2e565b6102a08201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110613bf7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b815181526020808301516102c0830191613c1f908401826001600160a01b03169052565b506040830151613c34604084018260ff169052565b50606083015160608301526080830151608083015260a0830151613c6360a08401826001600160a01b03169052565b5060c0830151613c7960c084018261ffff169052565b5060e0830151613c8f60e084018261ffff169052565b50610100830151613ca961010084018263ffffffff169052565b50610120830151613cc361012084018263ffffffff169052565b506101408301516101408301526101608301516101608301526101808301516101808301526101a08301516101a08301526101c08301516101c08301526101e08301516101e0830152610200830151610200830152610220830151610220830152610240830151613d3a61024084018260ff169052565b50610260830151613d5161026084018260ff169052565b50610280830151613d6761028084018215159052565b506102a0830151613d7c6102a0840182613bc2565b5092915050565b5f60208284031215613d93575f5ffd5b610dc382613a0a565b5f5f60408385031215613dad575f5ffd5b82516020840151909250613dc0816132c5565b809150509250929050565b61ffff8181168382160190811115612e3b57612e3b613446565b5f60ff831680613df757613df7613486565b8060ff8416069150509291505056fea26469706673582212201a2fd7bdc52876d804fee0ff9bcea14f185d6b81fdbaddaf2f184c10506c152664736f6c634300081e00330000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc", + "nonce": "0x11b", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", + "transactionType": "CALL", + "contractName": "Router", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "function": "approveCollaterals()", + "arguments": [], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "gas": "0x13400", + "value": "0x0", + "input": "0x39b90b99", + "nonce": "0x11c", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionType": "CALL", + "contractName": "Router", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "function": "approveUsdTokens()", + "arguments": [], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "gas": "0x2ec03", + "value": "0x0", + "input": "0xe2230a42", + "nonce": "0x11d", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", + "transactionType": "CREATE", + "contractName": "RolloverVault", + "contractAddress": "0x859af9ffedb32f204b5662e774aff1e38c6070c3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x51ccdf", + "value": "0x0", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161498e6100f95f395f81816129a8015281816129d10152612b78015261498e5ff3fe6080604052600436106102b9575f3560e01c80636e8e052d11610170578063a217fddf116100d1578063cc3c70eb11610087578063db9fe41e11610062578063db9fe41e14610907578063dd62ed3e14610926578063eb91d0f514610989575f5ffd5b8063cc3c70eb146108aa578063d547741f146108c9578063db006a75146108e8575f5ffd5b8063a9059cbb116100b7578063a9059cbb14610824578063ad3cb1cc14610843578063ae60f92a1461088b575f5ffd5b8063a217fddf146107bc578063a8c94d1b146107cf575f5ffd5b80638bf5fc691161012657806395d89b411161010c57806395d89b411461073157806396b298c51461074557806396ebfb8914610780575f5ffd5b80638bf5fc69146106ba57806391d14854146106ce575f5ffd5b806374cf09631161015657806374cf0963146106325780637a997ab71461065157806389f91ece14610684575f5ffd5b80636e8e052d146105cb57806370a08231146105df575f5ffd5b80632f2ff15d1161021a57806336568abe116101d05780634f1ef286116101b65780634f1ef2861461056e57806352d1902d146105815780635c975abb14610595575f5ffd5b806336568abe1461053057806347e7ef241461054f575f5ffd5b8063313ce56711610200578063313ce567146104a557806331d31efb146104e9578063364bc15a146104fd575f5ffd5b80632f2ff15d1461045a578063311176d714610479575f5ffd5b806316c38b3c1161026f5780631fb207fd116102555780631fb207fd146103cf57806323b872dd146103ee578063248a9ca31461040d575f5ffd5b806316c38b3c1461037b57806318160ddd1461039c575f5ffd5b8063069ed1241161029f578063069ed1241461031a57806306fdde031461033b578063095ea7b31461035c575f5ffd5b806301e1d114146102c457806301ffc9a7146102eb575f5ffd5b366102c057005b5f5ffd5b3480156102cf575f5ffd5b506102d86109c5565b6040519081526020015b60405180910390f35b3480156102f6575f5ffd5b5061030a610305366004613ece565b6109d3565b60405190151581526020016102e2565b348015610325575f5ffd5b5061032e610a2f565b6040516102e29190613f0d565b348015610346575f5ffd5b5061034f610ab2565b6040516102e29190613f58565b348015610367575f5ffd5b5061030a610376366004613fcf565b610b85565b348015610386575f5ffd5b5061039a610395366004614006565b610b9c565b005b3480156103a7575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102d8565b3480156103da575f5ffd5b5061039a6103e9366004614142565b610be0565b3480156103f9575f5ffd5b5061030a6104083660046141ec565b610d5d565b348015610418575f5ffd5b506102d861042736600461422a565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b348015610465575f5ffd5b5061039a610474366004614241565b610d82565b348015610484575f5ffd5b5061048d610dcb565b6040516001600160a01b0390911681526020016102e2565b3480156104b0575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff90911681526020016102e2565b3480156104f4575f5ffd5b5061048d610dfd565b348015610508575f5ffd5b506102d87ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b34801561053b575f5ffd5b5061039a61054a366004614241565b610e8e565b34801561055a575f5ffd5b5061039a610569366004613fcf565b610edf565b61039a61057c36600461426f565b61102c565b34801561058c575f5ffd5b506102d8611047565b3480156105a0575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661030a565b3480156105d6575f5ffd5b5061032e611075565b3480156105ea575f5ffd5b506102d86105f93660046142cf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b34801561063d575f5ffd5b5061039a61064c366004614373565b61109d565b34801561065c575f5ffd5b506102d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b34801561068f575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1661030a565b3480156106c5575f5ffd5b5061032e61121c565b3480156106d9575f5ffd5b5061030a6106e8366004614241565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561073c575f5ffd5b5061034f61129c565b348015610750575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166104d7565b34801561078b575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031661048d565b3480156107c7575f5ffd5b506102d85f81565b3480156107da575f5ffd5b5061030a6107e93660046142cf565b6001600160a01b03165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0046020526040902054151590565b34801561082f575f5ffd5b5061030a61083e366004613fcf565b6112ed565b34801561084e575f5ffd5b5061034f6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610896575f5ffd5b5061039a6108a53660046142cf565b6112fa565b3480156108b5575f5ffd5b5061039a6108c4366004614006565b611660565b3480156108d4575f5ffd5b5061039a6108e3366004614241565b6116d1565b3480156108f3575f5ffd5b5061039a61090236600461422a565b611714565b348015610912575f5ffd5b5061039a610921366004613fcf565b6117fa565b348015610931575f5ffd5b506102d861094036600461445c565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610994575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031661048d565b5f6109ce611b88565b905090565b5f6109dd82611fad565b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa610c25b00000000000000000000000000000000000000000000000000000000145b92915050565b60607f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b600301805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a8a575b5050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2f90614488565b8015610b7a5780601f10610b5157610100808354040283529160200191610b7a565b820191905f5260205f20905b815481529060010190602001808311610b5d57829003601f168201915b505050505091505090565b5f33610b92818585612184565b5060019392505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610bc681612191565b8115610bd857610bd461219e565b5050565b610bd4612213565b5f610be961226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610c155750825b90505f8267ffffffffffffffff166001148015610c315750303b155b905081158015610c3f575080155b15610c76576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610cd75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ce48b8b8b8b8b612293565b610cee5f876124b5565b508315610d505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b5f33610d6a858285612581565b610d7585858561262f565b60019150505b9392505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610dbb81612191565b610dc583836124b5565b50505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b546001600160a01b0316919050565b5f610e2f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031690565b6001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906144d9565b6001600160a01b0381163314610ed0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eda82826126be565b505050565b610ee7612762565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615610f3b57610f3b7fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760336127c0565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003610fba576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f610fc5825f61284c565b9050610fd133826128d4565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a3610eda6001600160a01b038416333085612921565b61103461299d565b61103d82612a44565b610bd48282612a4e565b5f611050612b6d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000610a53565b5f6110a661226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110d25750825b90505f8267ffffffffffffffff1660011480156110ee5750303b155b9050811580156110fc575080155b15611133576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6111a28c8c8c8c8c8c612bcf565b6111ac5f876124b5565b50831561120e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000600101805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610a8a575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b5f33610b9281858561262f565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61132481612191565b61132c612bf5565b6001600160a01b0382165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00460205260408120547f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00091036113c7576040517fc4342a360000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610fb1565b6003810180546113d990600190614521565b815481106113e9576113e9614534565b5f9182526020808320909101546001600160a01b03868116845260048501909252604090922054911690600383019061142490600190614521565b8154811061143457611434614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055918516815260048301918290526040812054919060038401611496600185614521565b815481106114a6576114a6614534565b5f9182526020808320909101546001600160a01b03908116845283820194909452604092830182209490945591861682526004840190925290812055600381018054806114f5576114f5614561565b600190038181905f5260205f20015f6101000a8154906001600160a01b03021916905590556115268360015f612c50565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611583573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a7919061458e565b604080516001600160a01b0387168152602081018390529192507f8fb0a322853526c9ca98819a150cb63ad67f3a8b1729fd7bfc442e6ee958ae58910160405180910390a16040517fdb006a75000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0385169063db006a75906024015f604051808303815f87803b158015611644575f5ffd5b505af1158015611656573d5f5f3e3d5ffd5b5050505050505050565b5f61166a81612191565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461170a81612191565b610dc583836126be565b61171c612762565b5f611727825f6130b0565b9050611733338361325b565b5f61173c611075565b90508060405161174c91906145a5565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca848660405161178f9291906145e3565b60405180910390a35f5b8151811015610dc5576117f2338483815181106117b8576117b8614534565b60200260200101518484815181106117d2576117d2614534565b60200260200101516001600160a01b03166132a89092919063ffffffff16565b600101611799565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61182481612191565b61182c612bf5565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000611855610dfd565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152919091169063c3c5a54790602401602060405180830381865afa1580156118b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d8919061462f565b611919576040517fda339c3b0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b825f03611952576040517f43ad20fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526004820160205260408120549003611a2a57600381015461198290600161464a565b6001600160a01b0385165f8181526004840160209081526040822093909355600384018054600181810183559183529390912090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790556119ed90859080612c50565b6040516001600160a01b03851681527f986ce7afdb969fbc71f1a2053eceba46b05f76dc8b60dd917457b25437d9b96c9060200160405180910390a15b604080516001600160a01b0386168152602081018590527f1bd8521111218958363445b6d1876aee0263dca2b541378702bc4d0b96c930de910160405180910390a1611a74610dcb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052919091169063095ea7b3906044016020604051808303815f875af1158015611adb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aff919061462f565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0385169063b6b55f25906024016020604051808303815f875af1158015611b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b81919061458e565b5050505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00081805b6003830154811015611e63575f836003018281548110611bcf57611bcf614534565b5f918252602080832090910154604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216945084926318160ddd926004808401938290030181865afa158015611c37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5b919061458e565b90505f611c66610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa158015611cc5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce9919061458e565b90505f611d1d7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015611d7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da0919061458e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015611e00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e24919061458e565b9050611e318183866132d9565b611e3c8285876132d9565b611e46919061464a565b611e50908861464a565b96505060019094019350611bad92505050565b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b03166040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f10919061458e565b611f18610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f99919061458e565b611fa3919061464a565b610d7b908261464a565b5f611fb782613389565b8061200357507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061204f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061209b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806120e757507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061213357507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b610eda838383600161341f565b61219b81336127c0565b50565b6121a6612762565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b61221b612bf5565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336121f5565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610a29565b61229b613547565b6122a58585613585565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612302573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232691906144d9565b815f8151811061233857612338614534565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183525f939192909183019080368337019050509050826001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d291906144d9565b815f815181106123e4576123e4614534565b60200260200101906001600160a01b031690816001600160a01b031681525050826001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612440573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246491906144d9565b8160018151811061247757612477614534565b60200260200101906001600160a01b031690816001600160a01b0316815250506124a3858584846135e8565b6124ac8361373a565b50505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612578575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561252e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a29565b5f915050610a29565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610dc55781811015612621576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610fb1565b610dc584848484035f61341f565b6001600160a01b038316612671576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0382166126b3576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610eda838383613919565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612578575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a29565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127be576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610bd4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610fb1565b5f610d7b6128817f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61288c90600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546128b8919061464a565b6128c06109c5565b6128cb90600161464a565b85919085613a7e565b6001600160a01b038216612916576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd45f8383613919565b6040516001600160a01b038481166024830152838116604483015260648201839052610dc59186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ac9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a0d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a01613b4e565b6001600160a01b031614155b156127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bd481612191565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ac6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612ac39181019061458e565b60015b612b07576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b63576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610fb1565b610eda8383613b75565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bd7613547565b612be18686613585565b612bed848484846135e8565b505050505050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127be576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0008215612e93578115612cdf576003810180546001810182555f828152602080822090920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389169081179091559254928152600484019091526040902055612e4e565b600381018054612cf190600190614521565b81548110612d0157612d01614534565b5f9182526020808320909101546001600160a01b038781168452600485019092526040909220549116906003830190612d3c90600190614521565b81548110612d4c57612d4c614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526004830191829052604081205460038401805491939291612db390600190614521565b81548110612dc357612dc3614534565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205560038101805480612dfa57612dfa614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260048301905260408120555b80600301604051612e5f919061474e565b604051908190038120907f53eeb669b1028bb347702c6124c167d5d820361ca1cfd53ee0ad3347bf9f196c905f90a2610dc5565b8115612efc576001818101805491820181555f818152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891690811790915591549181526002840190925260409091205561306a565b600180820180549091612f0e91614521565b81548110612f1e57612f1e614534565b5f9182526020808320909101546001600160a01b03878116845260028501909252604090922054911690600183810191612f589190614521565b81548110612f6857612f68614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526002830191829052604081205460018481018054929493929091612fcf91614521565b81548110612fdf57612fdf614534565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556001810180548061301657613016614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260028301905260408120555b8060010160405161307b919061474e565b604051908190038120907f6f2baeadf0ba25956481826abc672bf631af70b52c0fdbd0919f4785387845b1905f90a250505050565b60605f6130bb611075565b5167ffffffffffffffff8111156130d4576130d4614021565b6040519080825280602002602001820160405280156130fd578160200160208202803683370190505b5090505f5b61310a611075565b518110156132535761322e61311d611075565b828151811061312e5761312e614534565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613195573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b9919061458e565b6131c490600161464a565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166131f990600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254613225919061464a565b87919087613a7e565b82828151811061324057613240614534565b6020908102919091010152600101613102565b509392505050565b6001600160a01b03821661329d576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd4825f83613919565b6040516001600160a01b03838116602483015260448201839052610eda91859182169063a9059cbb90606401612956565b5f5f5f6132e68686613bca565b91509150815f0361330a5783818161330057613300614785565b0492505050610d7b565b818411613321576133216003851502601118613be6565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a2957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a29565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613482576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0384166134c4576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611b8157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161353891815260200190565b60405180910390a35050505050565b61354f613bf7565b6127be576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61358d613547565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135d984826147f6565b5060048101610dc583826147f6565b6135f0613547565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506136609060018301906020860190613e3f565b505f5b83518110156136b95761367781600161464a565b826002015f86848151811061368e5761368e614534565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613663565b5081516136cf9060038301906020850190613e3f565b505f5b8251811015613728576136e681600161464a565b826004015f8584815181106136fd576136fd614534565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016136d2565b50600501805460ff1916905550505050565b613742613547565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517f311176d700000000000000000000000000000000000000000000000000000000815290517f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000929163311176d79160048083019260209291908290030181865afa15801561380b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061382f91906144d9565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03918216178255604080517feb91d0f500000000000000000000000000000000000000000000000000000000815290519184169163eb91d0f5916004808201926020929091908290030181865afa1580156138b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138db91906144d9565b60019190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166139665781816002015f82825461395b919061464a565b909155506139ef9050565b6001600160a01b0384165f90815260208290526040902054828110156139d1576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610fb1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316613a0d576002810180548390039055613a2b565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a7091815260200190565b60405180910390a350505050565b5f613aab613a8b83613c15565b8015613aa657505f8480613aa157613aa1614785565b868809115b151590565b613ab68686866132d9565b613ac0919061464a565b95945050505050565b5f5f60205f8451602086015f885af180613ae8576040513d5f823e3d81fd5b50505f513d91508115613aff578060011415613b0c565b6001600160a01b0384163b155b15610dc5576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dee565b613b7e82613c41565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613bc257610eda8282613ce8565b610bd4613d51565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f613c0061226b565b5468010000000000000000900460ff16919050565b5f6002826003811115613c2a57613c2a6148cf565b613c3491906148fc565b60ff166001149050919050565b806001600160a01b03163b5f03613c8f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613d049190614942565b5f60405180830381855af49150503d805f8114613d3c576040519150601f19603f3d011682016040523d82523d5f602084013e613d41565b606091505b5091509150613ac0858383613d89565b34156127be576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082613d9e57613d9982613dfe565b610d7b565b8151158015613db557506001600160a01b0384163b155b15613df7576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5080610d7b565b805115613e0d57805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215613eaa579160200282015b82811115613eaa57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190613e5d565b50613eb6929150613eba565b5090565b5b80821115613eb6575f8155600101613ebb565b5f60208284031215613ede575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d7b575f5ffd5b602080825282518282018190525f918401906040840190835b81811015613f4d5783516001600160a01b0316835260209384019390920191600101613f26565b509095945050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6001600160a01b038116811461219b575f5ffd5b8035613fca81613fab565b919050565b5f5f60408385031215613fe0575f5ffd5b8235613feb81613fab565b946020939093013593505050565b801515811461219b575f5ffd5b5f60208284031215614016575f5ffd5b8135610d7b81613ff9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561409557614095614021565b604052919050565b5f5f67ffffffffffffffff8411156140b7576140b7614021565b50601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020016140ea8161404e565b9150508281528383830111156140fe575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112614123575f5ffd5b610d7b8383356020850161409d565b803560ff81168114613fca575f5ffd5b5f5f5f5f5f5f60c08789031215614157575f5ffd5b863567ffffffffffffffff81111561416d575f5ffd5b61417989828a01614114565b965050602087013567ffffffffffffffff811115614195575f5ffd5b6141a189828a01614114565b9550506141b060408801614132565b93506141be60608801614132565b925060808701356141ce81613fab565b915060a08701356141de81613fab565b809150509295509295509295565b5f5f5f606084860312156141fe575f5ffd5b833561420981613fab565b9250602084013561421981613fab565b929592945050506040919091013590565b5f6020828403121561423a575f5ffd5b5035919050565b5f5f60408385031215614252575f5ffd5b82359150602083013561426481613fab565b809150509250929050565b5f5f60408385031215614280575f5ffd5b823561428b81613fab565b9150602083013567ffffffffffffffff8111156142a6575f5ffd5b8301601f810185136142b6575f5ffd5b6142c58582356020840161409d565b9150509250929050565b5f602082840312156142df575f5ffd5b8135610d7b81613fab565b5f82601f8301126142f9575f5ffd5b813567ffffffffffffffff81111561431357614313614021565b8060051b6143236020820161404e565b9182526020818501810192908101908684111561433e575f5ffd5b6020860192505b8383101561436957823561435881613fab565b825260209283019290910190614345565b9695505050505050565b5f5f5f5f5f5f5f60e0888a031215614389575f5ffd5b873567ffffffffffffffff81111561439f575f5ffd5b6143ab8a828b01614114565b975050602088013567ffffffffffffffff8111156143c7575f5ffd5b6143d38a828b01614114565b9650506143e260408901614132565b94506143f060608901614132565b9350608088013567ffffffffffffffff81111561440b575f5ffd5b6144178a828b016142ea565b93505060a088013567ffffffffffffffff811115614433575f5ffd5b61443f8a828b016142ea565b92505061444e60c08901613fbf565b905092959891949750929550565b5f5f6040838503121561446d575f5ffd5b823561447881613fab565b9150602083013561426481613fab565b600181811c9082168061449c57607f821691505b6020821081036144d3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156144e9575f5ffd5b8151610d7b81613fab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a2957610a296144f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6020828403121561459e575f5ffd5b5051919050565b81515f90829060208501835b828110156145d85781516001600160a01b03168452602093840193909101906001016145b1565b509195945050505050565b604080825283519082018190525f9060208501906060840190835b8181101561461c5783518352602093840193909201916001016145fe565b5050602093909301939093525092915050565b5f6020828403121561463f575f5ffd5b8151610d7b81613ff9565b80820180821115610a2957610a296144f4565b6001815b60018411156146985780850481111561467c5761467c6144f4565b600184161561468a57908102905b60019390931c928002614661565b935093915050565b5f826146ae57506001610a29565b816146ba57505f610a29565b81600181146146d057600281146146da576146f6565b6001915050610a29565b60ff8411156146eb576146eb6144f4565b50506001821b610a29565b5060208310610133831016604e8410600b8410161715614719575081810a610a29565b6147255f19848461465d565b805f1904821115614738576147386144f4565b029392505050565b5f610d7b60ff8416836146a0565b5f818354839150845f5260205f205f5b828110156145d85781546001600160a01b031684526020909301926001918201910161475e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b601f821115610eda57805f5260205f20601f840160051c810160208510156147d75750805b601f840160051c820191505b81811015611b81575f81556001016147e3565b815167ffffffffffffffff81111561481057614810614021565b6148248161481e8454614488565b846147b2565b6020601f821160018114614856575f831561483f5750848201515b5f19600385901b1c1916600184901b178455611b81565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156148a35787850151825560209485019460019092019101614883565b50848210156148c057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614933577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ca0177e67119173218ea015485a8084a2d534adbff99a8b4cc9e0bf649acaf5964736f6c634300081e0033", + "nonce": "0x11e", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "function": null, + "arguments": [ + "0x859Af9FfeDb32f204B5662E774aff1e38c6070C3", + "0x1fb207fd00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c560000000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0xa44b7", + "value": "0x0", + "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220d07c17b7f4c9cda4be02a3d984724a3d1a355fce48b658787cd5928f0ce89fd464736f6c634300081e0033000000000000000000000000859af9ffedb32f204b5662e774aff1e38c6070c3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001441fb207fd00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x11f", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "gas": "0x141ac", + "value": "0x0", + "input": "0x2f2ff15dfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x120", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd5b1dd57aaefffe77f455c934afaabbf42e3aa25c08a7476f93f88ddbcf7eb22", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "gas": "0xaaf5", + "value": "0x0", + "input": "0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x121", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", + "transactionType": "CREATE", + "contractName": "FulfillmentVault", + "contractAddress": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x5891c8", + "value": "0x0", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614fb06100f95f395f81816128f50152818161291e0152612aa70152614fb05ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b50610357610352366004614070565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f91906140dd565b348015610393575f5ffd5b506103576103a2366004614113565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d736600461414a565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b50610357610455366004614165565b610dce565b348015610465575f5ffd5b506103256104743660046141a3565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d53660046141ba565b610e84565b3480156104e5575f5ffd5b506103bb6104f4366004614309565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c63660046141ba565b61104c565b3480156105d6575f5ffd5b506103bb6105e5366004614113565b61109d565b3480156105f5575f5ffd5b506103bb6106043660046143ed565b611278565b348015610614575f5ffd5b506103bb610623366004614113565b6113e5565b6103bb61063636600461448a565b611532565b348015610646575f5ffd5b5061032561154d565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961157b565b60405161032f91906144ea565b3480156106b1575f5ffd5b506103256106c0366004614535565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb6107133660046145be565b6115fd565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611702565b3480156107a0575f5ffd5b506103576107af3660046141ba565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611782565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b0366004614113565b6117d3565b3480156108c0575f5ffd5b506103bb6108cf366004614535565b6117e0565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb6109853660046146bc565b6118b0565b348015610995575f5ffd5b506103bb6109a436600461414a565b611932565b3480156109b4575f5ffd5b506103bb6109c3366004614113565b6119a3565b3480156109d3575f5ffd5b506103bb6109e23660046141ba565b611a41565b3480156109f2575f5ffd5b506103bb610a013660046141a3565b611a84565b348015610a11575f5ffd5b506103bb610a203660046141a3565b611b7e565b348015610a30575f5ffd5b50610325610a3f3660046146d8565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa2366004614715565b611c64565b348015610ab2575f5ffd5b506103bb610ac1366004614113565b611dda565b348015610ad1575f5ffd5b506103bb611ec0565b5f610ae3611f33565b905090565b5f610af282611fe6565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061476e565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc19061476e565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c248185856121bd565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb891906147bf565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d82816121ca565b8115610d9457610d906121d7565b5050565b610d9061224c565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb8582856122a4565b610de6858585612352565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147e1565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd816121ca565b610ec783836123e1565b50505050565b5f610ed66124ad565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c6124d5565b610fdc5f876123e1565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61109882826125b0565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c7816121ca565b6110cf612654565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d891906147fc565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a2816121ca565b6112aa612654565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de614817565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f8151811061132957611329614817565b6020026020010181905250836040516113429190614844565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b19291906148b3565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505050505050565b6113ed6126b1565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615611441576114417fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be67603361270d565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b002602052604081205490036114c0576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f6114cb825f612799565b90506114d73382612821565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b03841633308561286e565b61153a6128ea565b61154382612991565b610d90828261299b565b5f611556612a9c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006003018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115d5575b5050505050905090565b5f6116066124ad565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116325750825b90505f8267ffffffffffffffff16600114801561164e5750303b155b90508115801561165c575080155b15611693576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116f45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612afe565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006001018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116115d5575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061476e565b5f33610c24818585612352565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b361182a610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561188c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9091906147fc565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6118da816121ca565b6118e2612654565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac48360405161191e91815260200190565b60405180910390a261109883836001612b1c565b5f61193c816121ca565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6119cd816121ca565b6119d5612654565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611a1091815260200190565b60405180910390a26001600160a01b038316611a3757611098611a31612bd9565b83612bf7565b6110988383612d1f565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611a7a816121ca565b610ec783836125b0565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611aae816121ca565b611ab6612654565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611b64575f5ffd5b505af1158015611b76573d5f5f3e3d5ffd5b505050505050565b611b866126b1565b5f611b91825f612d35565b9050611b9d3383612ee0565b5f611ba661157b565b905080604051611bb69190614928565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611bf992919061495b565b60405180910390a35f5b8151811015610ec757611c5c33848381518110611c2257611c22614817565b6020026020010151848481518110611c3c57611c3c614817565b60200260200101516001600160a01b0316612f2d9092919063ffffffff16565b600101611c03565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611c8e816121ca565b611c96612654565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611d78611d538763ffffffff16612f5e565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16612f7d565b6003810180546fffffffffffffffffffffffffffffffff16905f611d9b836149a9565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611e04816121ca565b611e0c612654565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611e4791815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611efb610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611f657f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611fc2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147bf565b5f611ff08261307d565b8061203c57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061208857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806120d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b8061212057507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061216c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b6110988383836001613113565b6121d4813361270d565b50565b6121df6126b1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b612254612654565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361222e565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec75781811015612344576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016114b7565b610ec784848484035f613113565b6001600160a01b038316612394576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b0382166123d6576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b61109883838361323b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166124a4575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561245a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b6124dd6133a0565b6124e786866133de565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612544573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256891906147e1565b815f8151811061257a5761257a614817565b60200260200101906001600160a01b031690816001600160a01b0316815250506125a685858384613441565b61126f8383613593565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156124a4575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166126af576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156126af576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016114b7565b5f610dec6127ce7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b6127d990600a614ac8565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546128059190614ad6565b61280d610ada565b612818906001614ad6565b859190856136bd565b6001600160a01b038216612863576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d905f838361323b565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613708565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061295a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661294e61378d565b6001600160a01b031614155b156126af576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d90816121ca565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156129f5575060408051601f3d908101601f191682019092526129f2918101906147bf565b60015b612a36576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612a92576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016114b7565b61109883836137b4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126af576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b066133a0565b612b1086866133de565b611b7684848484613441565b5f612b2684613809565b90505f8215612b8657612b39858561386f565b90508067ffffffffffffffff165f03612b81576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b612bce565b67ffffffffffffffff841115612bcb576040517f857ccb8e000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b50825b610d5182868361397b565b5f466103e614612bea576096612bee565b6104515b61ffff16905090565b5f612c02838361386f565b90508067ffffffffffffffff165f03612c4a576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018390526024016114b7565b5f612c5484613809565b9050612c5f84613a56565b15612cf3575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114612cad576040519150601f19603f3d011682016040523d82523d5f602084013e612cb2565b606091505b5050905080612ced576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f612d038563ffffffff16613a7c565b6080810151909150611b766001600160a01b0382168487612f2d565b5f612d2983613b88565b90506110988183612bf7565b60605f612d4061157b565b5167ffffffffffffffff811115612d5957612d596141e8565b604051908082528060200260200182016040528015612d82578160200160208202803683370190505b5090505f5b612d8f61157b565b51811015612ed857612eb3612da261157b565b8281518110612db357612db3614817565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3e91906147bf565b612e49906001614ad6565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612e7e90600a614ac8565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612eaa9190614ad6565b879190876136bd565b828281518110612ec557612ec5614817565b6020908102919091010152600101612d87565b509392505050565b6001600160a01b038216612f22576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d90825f8361323b565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb906064016128a3565b5f610b3e612f6e83612710614ae9565b67ffffffffffffffff16613c29565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f198184030181529082905261301c939291602001614b20565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161304791906140dd565b5f604051808303815f87803b15801561305e575f5ffd5b505af1158015613070573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613176576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b0384166131b8576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161322c91815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166132885781816002015f82825461327d9190614ad6565b909155506133119050565b6001600160a01b0384165f90815260208290526040902054828110156132f3576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016114b7565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661332f57600281018054839003905561334d565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161339291815260200190565b60405180910390a350505050565b6133a8613c76565b6126af576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133e66133a0565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036134328482614bc5565b5060048101610ec78382614bc5565b6134496133a0565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506134b99060018301906020860190613fea565b505f5b8351811015613512576134d0816001614ad6565b826002015f8684815181106134e7576134e7614817565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016134bc565b5081516135289060038301906020850190613fea565b505f5b82518110156135815761353f816001614ad6565b826004015f85848151811061355657613556614817565b6020908102919091018101516001600160a01b031682528101919091526040015f205560010161352b565b50600501805460ff1916905550505050565b61359b6133a0565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561365a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061367e91906147e1565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f6136ea6136ca83613c94565b80156136e557505f84806136e0576136e0614c80565b868809115b151590565b6136f5868686613cc0565b6136ff9190614ad6565b95945050505050565b5f5f60205f8451602086015f885af180613727576040513d5f823e3d81fd5b50505f513d9150811561373e57806001141561374b565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b6137bd82613d70565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613801576110988282613e17565b610d90613e80565b5f613812612bd9565b67ffffffffffffffff168267ffffffffffffffff16036138475750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614cad565b5f5f6138808463ffffffff16613a7c565b60808101519091506001600160a01b03161561390b575f8160e001515f0b13156138d4575f8160e00151600a6138b69190614ac8565b6138c09085614ccc565b90506138cb81613eb8565b92505050610b3e565b5f8160e001515f0b1215613906575f8160e001516138f190614cdf565b6138fc90600a614ac8565b6138c09085614d1a565b61393e565b61391484613a56565b1561393e57613936613927600a80614ac8565b6139319085614ccc565b613eb8565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff851660048201526024016114b7565b306001600160a01b038416036139bd576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e1391613a2b916001916006919060a001614b20565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161124691906140dd565b5f613a5f612bd9565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613af391614d31565b5f60405180830381855afa9150503d805f8114613b2b576040519150601f19603f3d011682016040523d82523d5f602084013e613b30565b606091505b509150915081613b6c576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613b809190614e13565b949350505050565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c1d9190614f11565b63ffffffff1692915050565b5f63ffffffff821115613c72576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260206004820152602481018390526044016114b7565b5090565b5f613c7f6124ad565b5468010000000000000000900460ff16919050565b5f6002826003811115613ca957613ca9614f2c565b613cb39190614f59565b60ff166001149050919050565b5f5f5f613ccd8686613f07565b91509150815f03613cf157838181613ce757613ce7614c80565b0492505050610dec565b818411613d0857613d086003851502601118613f23565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613dbe576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613e339190614d31565b5f60405180830381855af49150503d805f8114613e6b576040519150601f19603f3d011682016040523d82523d5f602084013e613e70565b606091505b50915091506136ff858383613f34565b34156126af576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f67ffffffffffffffff821115613c7257604080517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004810191909152602481018390526044016114b7565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613f4957613f4482613fa9565b610dec565b8151158015613f6057506001600160a01b0384163b155b15613fa2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5080610dec565b805115613fb857805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215614055579160200282015b8281111561405557825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614008565b50613c729291505b80821115613c72575f815560010161405d565b5f60208284031215614080575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec60208301846140af565b6001600160a01b03811681146121d4575f5ffd5b803561410e816140ef565b919050565b5f5f60408385031215614124575f5ffd5b823561412f816140ef565b946020939093013593505050565b80151581146121d4575f5ffd5b5f6020828403121561415a575f5ffd5b8135610dec8161413d565b5f5f5f60608486031215614177575f5ffd5b8335614182816140ef565b92506020840135614192816140ef565b929592945050506040919091013590565b5f602082840312156141b3575f5ffd5b5035919050565b5f5f604083850312156141cb575f5ffd5b8235915060208301356141dd816140ef565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff81118282101715614239576142396141e8565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614268576142686141e8565b604052919050565b5f67ffffffffffffffff821115614289576142896141e8565b50601f01601f191660200190565b5f6142a96142a484614270565b61423f565b90508281528383830111156142bc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126142e1575f5ffd5b610dec83833560208501614297565b60ff811681146121d4575f5ffd5b803561410e816142f0565b5f5f5f5f5f5f5f60e0888a03121561431f575f5ffd5b873567ffffffffffffffff811115614335575f5ffd5b6143418a828b016142d2565b975050602088013567ffffffffffffffff81111561435d575f5ffd5b6143698a828b016142d2565b965050604088013561437a816142f0565b9450606088013561438a816142f0565b9350608088013561439a816140ef565b925060a08801356143aa816140ef565b915060c08801356143ba816140ef565b8091505092959891949750929550565b5f67ffffffffffffffff8211156143e3576143e36141e8565b5060051b60200190565b5f5f604083850312156143fe575f5ffd5b82359150602083013567ffffffffffffffff81111561441b575f5ffd5b8301601f8101851361442b575f5ffd5b80356144396142a4826143ca565b8082825260208201915060208360051b85010192508783111561445a575f5ffd5b6020840193505b8284101561447c578335825260209384019390910190614461565b809450505050509250929050565b5f5f6040838503121561449b575f5ffd5b82356144a6816140ef565b9150602083013567ffffffffffffffff8111156144c1575f5ffd5b8301601f810185136144d1575f5ffd5b6144e085823560208401614297565b9150509250929050565b602080825282518282018190525f918401906040840190835b8181101561452a5783516001600160a01b0316835260209384019390920191600101614503565b509095945050505050565b5f60208284031215614545575f5ffd5b8135610dec816140ef565b5f82601f83011261455f575f5ffd5b813561456d6142a4826143ca565b8082825260208201915060208360051b86010192508583111561458e575f5ffd5b602085015b838110156145b45780356145a6816140ef565b835260209283019201614593565b5095945050505050565b5f5f5f5f5f5f5f60e0888a0312156145d4575f5ffd5b873567ffffffffffffffff8111156145ea575f5ffd5b6145f68a828b016142d2565b975050602088013567ffffffffffffffff811115614612575f5ffd5b61461e8a828b016142d2565b96505061462d604089016142fe565b945061463b606089016142fe565b9350608088013567ffffffffffffffff811115614656575f5ffd5b6146628a828b01614550565b93505060a088013567ffffffffffffffff81111561467e575f5ffd5b61468a8a828b01614550565b92505061469960c08901614103565b905092959891949750929550565b67ffffffffffffffff811681146121d4575f5ffd5b5f5f604083850312156146cd575f5ffd5b823561412f816146a7565b5f5f604083850312156146e9575f5ffd5b82356146f4816140ef565b915060208301356141dd816140ef565b63ffffffff811681146121d4575f5ffd5b5f5f5f5f60808587031215614728575f5ffd5b843561473381614704565b935060208501356147438161413d565b92506040850135614753816146a7565b91506060850135614763816146a7565b939692955090935050565b600181811c9082168061478257607f821691505b6020821081036147b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156147cf575f5ffd5b5051919050565b805161410e816140ef565b5f602082840312156147f1575f5ffd5b8151610dec816140ef565b5f6020828403121561480c575f5ffd5b8151610dec8161413d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b8281101561486e578151845260209384019390910190600101614850565b509195945050505050565b5f8151808452602084019350602083015f5b828110156148a957815186526020958601959091019060010161488b565b5093949350505050565b604081525f6148c56040830185614879565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561491a57601f19868403018552614904838351614879565b60209586019590935091909101906001016148e8565b509098975050505050505050565b81515f90829060208501835b8281101561486e5781516001600160a01b0316845260209384019390910190600101614934565b604081525f61496d6040830185614879565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff81036149dc576149dc61497c565b60010192915050565b6001815b6001841115614a2057808504811115614a0457614a0461497c565b6001841615614a1257908102905b60019390931c9280026149e9565b935093915050565b5f82614a3657506001610b3e565b81614a4257505f610b3e565b8160018114614a585760028114614a6257614a7e565b6001915050610b3e565b60ff841115614a7357614a7361497c565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614aa1575081810a610b3e565b614aad5f1984846149e5565b805f1904821115614ac057614ac061497c565b029392505050565b5f610dec60ff841683614a28565b80820180821115610b3e57610b3e61497c565b67ffffffffffffffff8181168382160190811115610b3e57610b3e61497c565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f6136ff6004830184614b09565b601f82111561109857805f5260205f20601f840160051c81016020851015614ba65750805b601f840160051c820191505b81811015610d51575f8155600101614bb2565b815167ffffffffffffffff811115614bdf57614bdf6141e8565b614bf381614bed845461476e565b84614b81565b6020601f821160018114614c25575f8315614c0e5750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614c545787850151825560209485019460019092019101614c34565b5084821015614c7157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e61497c565b5f82614cda57614cda614c80565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614d1257614d1261497c565b5f0392915050565b8082028115828204841417610b3e57610b3e61497c565b5f610dec8284614b09565b5f82601f830112614d4b575f5ffd5b8151614d596142a482614270565b818152846020838601011115614d6d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b805161410e816146a7565b5f82601f830112614da3575f5ffd5b8151614db16142a4826143ca565b8082825260208201915060208360051b860101925085831115614dd2575f5ffd5b602085015b838110156145b4578051614dea816146a7565b835260209283019201614dd7565b805161410e816142f0565b80515f81900b811461410e575f5ffd5b5f60208284031215614e23575f5ffd5b815167ffffffffffffffff811115614e39575f5ffd5b82016101008185031215614e4b575f5ffd5b614e53614215565b815167ffffffffffffffff811115614e69575f5ffd5b614e7586828501614d3c565b825250602082015167ffffffffffffffff811115614e91575f5ffd5b614e9d86828501614d94565b602083015250614eaf60408301614d89565b6040820152614ec0606083016147d6565b6060820152614ed1608083016147d6565b6080820152614ee260a08301614df8565b60a0820152614ef360c08301614df8565b60c0820152614f0460e08301614e03565b60e0820152949350505050565b5f60208284031215614f21575f5ffd5b8151610dec81614704565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614f6b57614f6b614c80565b8060ff8416069150509291505056fea264697066735822122072f57a9323a55e6ab5d07ca6e166edbee355b6ac9cfec7884f38093c0260b15364736f6c634300081e0033", + "nonce": "0x122", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": null, + "arguments": [ + "0xa0ad2a279929F40FB6DFe5E0914e64DF2aAf2beC", + "0x2f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000060000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c560000000000000000000000000000000000000000000000000000000000" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x94647", + "value": "0x0", + "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220d07c17b7f4c9cda4be02a3d984724a3d1a355fce48b658787cd5928f0ce89fd464736f6c634300081e0033000000000000000000000000a0ad2a279929f40fb6dfe5e0914e64df2aaf2bec000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001642f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000060000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x123", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0x13008", + "value": "0x0", + "input": "0x2f2ff15dfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x124", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0x13008", + "value": "0x0", + "input": "0x2f2ff15ddc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x125", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x44800c", + "logs": [ + { + "address": "0x5555555555555555555555555555555555555555", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x24", + "removed": false + }, + { + "address": "0x22632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x00000000000000000000000088e35cd2cc5845780058e997cbd3fd92e3345864" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x25", + "removed": false + }, + { + "address": "0x88e35cd2cc5845780058e997cbd3fd92e3345864", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x26", + "removed": false + }, + { + "address": "0x22632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x27", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000001000000000000020000000000000000000000000020000000000000000800000000000200000000000000000020002000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000008000020000000000000000000000000080000000000000000000000000000000000000000000000020200000000000000000000008001000000000000000000000000000000020002000000000000000000000000000000000000000000000000000000000000000010002000080000000000000002000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x37161c", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4552a6", + "logs": [ + { + "address": "0x5555555555555555555555555555555555555555", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", + "transactionIndex": "0x3", + "logIndex": "0x28", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000200000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000020000000000000000000000000080000000000000000000000000000000000000000000000020000000000000000000000000001000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000010000000080000000000000002000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", + "transactionIndex": "0x3", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0xd29a", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x477033", + "logs": [ + { + "address": "0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x29", + "removed": false + }, + { + "address": "0xb88339cb7199b77e23db6e890353e22632ba630f", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x2a", + "removed": false + }, + { + "address": "0x111111a1a0667d36bd57c0a9f569b98057111111", + "topics": [ + "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" + ], + "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x2b", + "removed": false + } + ], + "logsBloom": "0x00000080400000000000400000000000000000000000000000000000000000000000000000000000000004000000000000000000080000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000020000000000000000000000000000000000000000000000000000000000000400000000000020000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000001000000200000000000200010000000000000000000000000000000000000000000081000000000000000", + "type": "0x2", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x21d8d", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x865c90", + "logs": [ + { + "address": "0x859af9ffedb32f204b5662e774aff1e38c6070c3", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", + "transactionIndex": "0x5", + "logIndex": "0x2c", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000020000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", + "transactionIndex": "0x5", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x3eec5d", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0x859af9ffedb32f204b5662e774aff1e38c6070c3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8e42a7", + "logs": [ + { + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000859af9ffedb32f204b5662e774aff1e38c6070c3" + ], + "data": "0x", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2d", + "removed": false + }, + { + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2e", + "removed": false + }, + { + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2f", + "removed": false + } + ], + "logsBloom": "0x00000004000000004000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000002000000000000000000000000000000000000080000020000000000000000000800000008000000000000000000000000000000002000100000000800000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000001000000000000000000020000000000000000000000000000000000004000100000002000020000000000000000000000800000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x7e617", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x8f1e9a", + "logs": [ + { + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionIndex": "0x7", + "logIndex": "0x30", + "removed": false + } + ], + "logsBloom": "0x00000004000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000008000000000000000000000000000200000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000080000000000000000000000000000000000000000000000000100000000000000000000000000000000000800000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionIndex": "0x7", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0xdbf3", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x270e13", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd5b1dd57aaefffe77f455c934afaabbf42e3aa25c08a7476f93f88ddbcf7eb22", + "transactionIndex": "0x2", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0x7bc6", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6b2f72", + "logs": [ + { + "address": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", + "transactionIndex": "0x3", + "logIndex": "0x83", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800800000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", + "transactionIndex": "0x3", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0x44215f", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x7251d0", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a0ad2a279929f40fb6dfe5e0914e64df2aaf2bec" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x84", + "removed": false + }, + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x85", + "removed": false + }, + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x86", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000082000000000001000000000000000000000000000000820000000000000000000800000008000000000000000000000000000000000000100000000800000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000001000000000000000000020000000000000000000000000000000000004000100000000000020000000000000000000000000000000000000000000000000120000000000000000", + "type": "0x2", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0x7225e", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x732dee", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionIndex": "0x5", + "logIndex": "0x87", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000100000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000008000000000000000000000000000200000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000080000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionIndex": "0x5", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0xdc1e", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x740a0c", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionIndex": "0x6", + "logIndex": "0x88", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000008000000000000080000000000000000000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000002000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionIndex": "0x6", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0xdc1e", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1765522548, + "chain": 999, + "commit": "7bc6011" +} \ No newline at end of file diff --git a/broadcast/DeployAll.s.sol/999/run-latest.json b/broadcast/DeployAll.s.sol/999/run-latest.json index 8ceb740..46ab1f9 100644 --- a/broadcast/DeployAll.s.sol/999/run-latest.json +++ b/broadcast/DeployAll.s.sol/999/run-latest.json @@ -1,138 +1,215 @@ { "transactions": [ { - "hash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", + "hash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", "transactionType": "CREATE", "contractName": "Router", - "contractAddress": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "function": null, "arguments": [ "0x5555555555555555555555555555555555555555", "0xDF8023679fE964982bDb93956f96B01c25f33Da5", + "0x0000000000000000000000000000000000000000", "0xe9d69CdD6Fe41e7B621B4A688C5D1a68cB5c8ADc" ], "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "gas": "0x43b9c5", + "gas": "0x479cbe", "value": "0x0", - "input": "0x610140604052348015610010575f5ffd5b5060405161408338038061408383398101604081905261002f916103a3565b6001600160a01b0380841660c052828116608081905290821660a0526040805163311176d760e01b8152905163311176d7916004808201926020929091908290030181865afa158015610084573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100a891906103e3565b6001600160a01b031660e0816001600160a01b031681525050816001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100fd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012191906103e3565b6001600160a01b0316610100816001600160a01b031681525050816001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610177573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019b91906103e3565b6001600160a01b039081166101205260c05160805160405163095ea7b360e01b815290831660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156101f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102189190610403565b5060e0516101005160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af115801561026c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102909190610403565b506101005160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156102e4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103089190610403565b5060e05160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af115801561035b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037f9190610403565b50505050610422565b80516001600160a01b038116811461039e575f5ffd5b919050565b5f5f5f606084860312156103b5575f5ffd5b6103be84610388565b92506103cc60208501610388565b91506103da60408501610388565b90509250925092565b5f602082840312156103f3575f5ffd5b6103fc82610388565b9392505050565b5f60208284031215610413575f5ffd5b815180151581146103fc575f5ffd5b60805160a05160c05160e0516101005161012051613aa76105dc5f395f818161023b015281816128bc015281816129680152612a0601525f818161036b015281816107a501528181610899015281816109a601528181610a4301528181610ab501528181610aee01528181610d47015281816110fe0152818161123601528181611c8e01528181611e8c01528181611f8001528181612398015281816123d401528181612465015261253b01525f818161020801528181610a0501528181610b1d01528181610b4201528181610bed01528181610c6301528181610cd10152818161102e015281816110a401528181611163015281816112040152818161170c015281816117880152818161203d01528181612117015281816124340152818161250c0152818161271a015281816127a7015261285c01525f818161016f01528181612655015261269001525f818161039e015281816115da015261166901525f81816102e6015281816107d901528181610f400152818161142f015281816114bf0152818161198d01528181611a9601528181611b4b01528181611d7401528181611ec0015281816121f701526122ef0152613aa75ff3fe60806040526004361061010c575f3560e01c80637aea9eab116100a1578063b500cf7711610071578063e2230a4211610057578063e2230a4214610346578063eb91d0f51461035a578063f98d06f01461038d575f5ffd5b8063b500cf7714610308578063ca38e8cc14610327575f5ffd5b80637aea9eab1461029057806381f139f4146102a357806389d7f33c146102b657806396ebfb89146102d5575f5ffd5b8063311176d7116100dc578063311176d7146101f757806331d31efb1461022a57806339b90b991461025d5780636235563814610271575f5ffd5b806307ecbf3c1461011757806317fcb39b1461015e57806321679a2e146101a9578063248391ff146101ca575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b50610136610131366004612d28565b6103c0565b6040805194855260208501939093529183015260ff1660608201526080015b60405180910390f35b348015610169575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610155565b3480156101b4575f5ffd5b506101c86101c3366004612d84565b61079e565b005b3480156101d5575f5ffd5b506101e96101e4366004612db6565b610983565b604051908152602001610155565b348015610202575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b348015610235575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b348015610268575f5ffd5b506101c8610d44565b34801561027c575f5ffd5b506101c861028b366004612db6565b610feb565b61013661029e366004612e0c565b611329565b6101366102b1366004612e72565b6115d3565b3480156102c1575f5ffd5b506101c86102d0366004612f36565b611705565b3480156102e0575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b348015610313575f5ffd5b506101c8610322366004612f68565b61198a565b348015610332575f5ffd5b506101c8610341366004612d84565b611e85565b348015610351575f5ffd5b506101c861203a565b348015610365575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b348015610398575f5ffd5b506101917f000000000000000000000000000000000000000000000000000000000000000081565b5f8080806103ce8580612fa7565b6103df906080810190606001612fe3565b15610630575f5b6103f08680612fa7565b6103fe906040810190612ffe565b905081101561062a576104118680612fa7565b61041f906040810190612ffe565b8281811061042f5761042f613069565b90506020020160208101906104449190613096565b6001600160a01b031663c6866922600261045e8980612fa7565b6104689080612ffe565b8581811061047857610478613069565b90506020020135600161048b91906130de565b610495919061311e565b6040518263ffffffff1660e01b81526004016104b391815260200190565b602060405180830381865afa1580156104ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f29190613131565b6104fc90866130de565b94505f8061054f61051360608a0160408b01613096565b600261051f8b80612fa7565b6105299080612ffe565b8781811061053957610539613069565b9050602002013561054a919061311e565b6121b9565b945091508390506105608880612fa7565b61056e906040810190612ffe565b8481811061057e5761057e613069565b90506020020160208101906105939190613096565b6001600160a01b031663c6866922836040518263ffffffff1660e01b81526004016105c091815260200190565b602060405180830381865afa1580156105db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ff9190613131565b61060a836002613148565b610614919061315f565b61061e90866130de565b945050506001016103e6565b50610797565b5f5b61063c8680612fa7565b61064a906040810190612ffe565b9050811015610795575f8061069861066860608a0160408b01613096565b6106728a80612fa7565b61067c9080612ffe565b8681811061068c5761068c613069565b905060200201356121b9565b90925090506106a782866130de565b94509250826106b68880612fa7565b6106c4906040810190612ffe565b848181106106d4576106d4613069565b90506020020160208101906106e99190613096565b6001600160a01b031663c686692261070260028561311e565b6040518263ffffffff1660e01b815260040161072091815260200190565b602060405180830381865afa15801561073b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061075f9190613131565b61076990876130de565b9550610776600283613172565b60010361078b576107886001876130de565b95505b5050600101610632565b505b9193509193565b5f6107ca847f000000000000000000000000000000000000000000000000000000000000000084610983565b90506107d68482612396565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610833573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108579190613190565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af11580156108e1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090591906131b6565b506040517ff9b1a9ad00000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b0382169063f9b1a9ad906044015b5f604051808303815f87803b158015610966575f5ffd5b505af1158015610978573d5f5f3e3d5ffd5b505050505050505050565b5f826001600160a01b0316846001600160a01b0316036109a4575080610d3d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610ab3576040517f4af218260000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03818116600484015260248301859052610aac9286917f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401602060405180830381865afa158015610a88573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e49190613131565b9050610d3d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610beb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396846de07f0000000000000000000000000000000000000000000000000000000000000000610b67877f000000000000000000000000000000000000000000000000000000000000000087610983565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381865afa158015610bc7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aac9190613131565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610c92576040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401610bac565b6040517f96846de00000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906396846de090604401602060405180830381865afa158015610d16573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3a9190613131565b90505b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa158015610da0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dc79190810190613259565b90505f5b8151811015610fe757818181518110610de657610de6613069565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80294d930000000000000000000000000000000000000000000000000000000060048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa158015610e6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9191906131b6565b15610fdf575f828281518110610ea957610ea9613069565b60200260200101516001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f109190613190565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192509082169063095ea7b3906044016020604051808303815f875af1158015610fb8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdc91906131b6565b50505b600101610dcb565b5050565b816001600160a01b0316836001600160a01b03160361100957505050565b805f0361101557505050565b61102c335b6001600160a01b038516903084612598565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316146110fc576040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015f604051808303815f87803b1580156110e5575f5ffd5b505af11580156110f7573d5f5f3e3d5ffd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611290576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156111b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d49190613131565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906347e7ef24906044015f604051808303815f87803b158015611279575f5ffd5b505af115801561128b573d5f5f3e3d5ffd5b505050505b611324336040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156112ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113139190613131565b6001600160a01b038516919061261a565b505050565b5f5f5f5f611336876103c0565b9296509094509250905083156113c957848411156113af5761135e6060880160408901613096565b6040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052604481018690526064015b60405180910390fd5b6113c96113c26060890160408a01613096565b858861264b565b821561142c5784831115611422576040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260248101849052604481018690526064016113a6565b61142c8884612718565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf42ffa478a6040518363ffffffff1660e01b815260040161147a91906134f5565b60206040518083038185885af1158015611496573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114bb9190613131565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611519573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190613190565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b1580156115b1575f5ffd5b505af11580156115c3573d5f5f3e3d5ffd5b5050505050945094509450949050565b5f5f5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d47eed458c8c6040518363ffffffff1660e01b81526004016116269291906135e7565b602060405180830381865afa158015611641573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116659190613131565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef9e5e28828d8d6040518463ffffffff1660e01b81526004016116b69291906135e7565b5f604051808303818588803b1580156116cd575f5ffd5b505af11580156116df573d5f5f3e3d5ffd5b50505050506116f089898989611329565b929e919d509b50909950975050505050505050565b5f611731837f000000000000000000000000000000000000000000000000000000000000000084610983565b90505f61173d8561288b565b90506117498483612718565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156117ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f291906131b6565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063b6b55f25906024016020604051808303815f875af1158015611850573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118749190613131565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156118da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fe9190613131565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561195e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198291906131b6565b505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119e7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a0b9190613190565b6040517f581a7ab0000000000000000000000000000000000000000000000000000000008152600481018590529091505f906001600160a01b0383169063581a7ab0906024016102c060405180830381865afa158015611a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9191906136a7565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e78bede836040518263ffffffff1660e01b8152600401611ae09190613866565b602060405180830381865afa158015611afb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b1f91906139ee565b61ffff1690505f611b3d611b3284612a7f565b836127106001612ad6565b9050611b498782612396565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ba5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bc99190613190565b6001600160a01b03166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152306024820152604481018990526064015f604051808303815f87803b158015611c3b575f5ffd5b505af1158015611c4d573d5f5f3e3d5ffd5b50506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303815f875af1158015611cd6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cfa91906131b6565b506040517f8fb702200000000000000000000000000000000000000000000000000000000081526004810187905260ff861660248201526001600160a01b03851690638fb70220906044015f604051808303815f87803b158015611d5c575f5ffd5b505af1158015611d6e573d5f5f3e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df29190613190565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018990526064015f604051808303815f87803b158015611e66575f5ffd5b505af1158015611e78573d5f5f3e3d5ffd5b5050505050505050505050565b5f611eb1847f000000000000000000000000000000000000000000000000000000000000000084610983565b9050611ebd8482612396565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3e9190613190565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af1158015611fc8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fec91906131b6565b506040517f40b369c100000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b038216906340b369c19060440161094f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa158015612096573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120bd9190810190613259565b90505f5b8151811015610fe7578181815181106120dc576120dc613069565b60209081029190910101516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af115801561218c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121b091906131b6565b506001016120c1565b6040517f013745180000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f91829182917f000000000000000000000000000000000000000000000000000000000000000090911690630137451890602401602060405180830381865afa15801561223e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122629190613190565b6040517f9097548d000000000000000000000000000000000000000000000000000000008152600481018690529091506001600160a01b03821690639097548d906024016040805180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e49190613a07565b80935081945050505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f43bde6d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612349573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061236d91906139ee565b905061238b8461237f83612710613a36565b61ffff16612710612b21565b935050509250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361240457610fe77f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316333084612598565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa1580156124ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d09190613131565b90506124dc8382612718565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015b5f604051808303815f87803b15801561257d575f5ffd5b505af115801561258f573d5f5f3e3d5ffd5b50505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526126149186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612bd1565b50505050565b6040516001600160a01b0383811660248301526044820183905261132491859182169063a9059cbb906064016125cd565b80801561268957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15612703577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b1580156126e7575f5ffd5b505af11580156126f9573d5f5f3e3d5ffd5b5050505050505050565b6113246001600160a01b038416333085612598565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361276657610fe76001600160a01b038316333084612598565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa1580156127ee573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128129190613131565b905061281d3361101a565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef2490604401612566565b6040517f7fe9a7e6000000000000000000000000000000000000000000000000000000008152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637fe9a7e690602401602060405180830381865afa158015612909573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061292d9190613190565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063c3c5a54790602401602060405180830381865afa1580156129af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129d391906131b6565b612a7a576040517f22fa95c4000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906322fa95c4906024016020604051808303815f875af1158015612a54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a789190613190565b505b919050565b5f612aa0826101c00151836101a00151612a9991906130de565b8390612c56565b826101800151836101e00151846101600151612abc919061315f565b612ac6919061315f565b612ad0919061315f565b92915050565b5f612b03612ae383612ca0565b8015612afe57505f8480612af957612af96130f1565b868809115b151590565b612b0e868686612b21565b612b1891906130de565b95945050505050565b5f5f5f612b2e8686612ccc565b91509150815f03612b5257838181612b4857612b486130f1565b0492505050610d3d565b818411612b6957612b696003851502601118612d07565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f60205f8451602086015f885af180612bf0576040513d5f823e3d81fd5b50505f513d91508115612c07578060011415612c14565b6001600160a01b0384163b155b15612614576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016113a6565b5f8261014001515f03612c6a57505f612ad0565b610d3d82846101800151856101e00151866101600151612c8a919061315f565b612c94919061315f565b8561014001515f612ad6565b5f6002826003811115612cb557612cb5613800565b612cbf9190613a50565b60ff166001149050919050565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f60c08284031215612a78575f5ffd5b5f60208284031215612d38575f5ffd5b813567ffffffffffffffff811115612d4e575f5ffd5b612d5a84828501612d18565b949350505050565b6001600160a01b0381168114612d76575f5ffd5b50565b8035612a7a81612d62565b5f5f5f60608486031215612d96575f5ffd5b8335612da181612d62565b95602085013595506040909401359392505050565b5f5f5f60608486031215612dc8575f5ffd5b8335612dd381612d62565b92506020840135612de381612d62565b929592945050506040919091013590565b8015158114612d76575f5ffd5b8035612a7a81612df4565b5f5f5f5f60808587031215612e1f575f5ffd5b8435612e2a81612d62565b9350602085013567ffffffffffffffff811115612e45575f5ffd5b612e5187828801612d18565b9350506040850135612e6281612df4565b9396929550929360600135925050565b5f5f5f5f5f5f60a08789031215612e87575f5ffd5b863567ffffffffffffffff811115612e9d575f5ffd5b8701601f81018913612ead575f5ffd5b803567ffffffffffffffff811115612ec3575f5ffd5b8960208260051b8401011115612ed7575f5ffd5b602091820197509550612eeb908801612d79565b9350604087013567ffffffffffffffff811115612f06575f5ffd5b612f1289828a01612d18565b935050612f2160608801612e01565b95989497509295919493608090920135925050565b5f5f5f60608486031215612f48575f5ffd5b833592506020840135612de381612d62565b60ff81168114612d76575f5ffd5b5f5f5f60608486031215612f7a575f5ffd5b8335612f8581612d62565b9250602084013591506040840135612f9c81612f5a565b809150509250925092565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112612fd9575f5ffd5b9190910192915050565b5f60208284031215612ff3575f5ffd5b8135610d3d81612df4565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613031575f5ffd5b83018035915067ffffffffffffffff82111561304b575f5ffd5b6020019150600581901b3603821315613062575f5ffd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156130a6575f5ffd5b8135610d3d81612d62565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612ad057612ad06130b1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f8261312c5761312c6130f1565b500490565b5f60208284031215613141575f5ffd5b5051919050565b8082028115828204841417612ad057612ad06130b1565b81810381811115612ad057612ad06130b1565b5f82613180576131806130f1565b500690565b8051612a7a81612d62565b5f602082840312156131a0575f5ffd5b8151610d3d81612d62565b8051612a7a81612df4565b5f602082840312156131c6575f5ffd5b8151610d3d81612df4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102c0810167ffffffffffffffff81118282101715613222576132226131d1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613251576132516131d1565b604052919050565b5f60208284031215613269575f5ffd5b815167ffffffffffffffff81111561327f575f5ffd5b8201601f8101841361328f575f5ffd5b805167ffffffffffffffff8111156132a9576132a96131d1565b8060051b6132b960208201613228565b918252602081840181019290810190878411156132d4575f5ffd5b6020850194505b8385101561330257845192506132f083612d62565b828252602094850194909101906132db565b979650505050505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613340575f5ffd5b830160208101925035905067ffffffffffffffff81111561335f575f5ffd5b8060051b3603821315613062575f5ffd5b8183526020830192505f815f5b848110156133ae57813561339081612d62565b6001600160a01b03168652602095860195919091019060010161337d565b5093949350505050565b5f6133c3828361330d565b60a085528060a08601527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156133f9575f5ffd5b60051b808260c087013784019050602083013561341581612f5a565b60ff16602085015261342a604084018461330d565b60c086840301604087015261344360c084018284613370565b9250505061345360608401612e01565b1515606085015260809283013592909301919091525090565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261349f575f5ffd5b830160208101925035905067ffffffffffffffff8111156134be575f5ffd5b803603821315613062575f5ffd5b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b602081525f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6184360301811261352b575f5ffd5b60c0602084015261354160e084018583016133b8565b9050613550602085018561346c565b601f198584030160408601526135678382846134cc565b9250505061357760408501612d79565b6001600160a01b03811660608501525061359360608501612d79565b6001600160a01b0381166080850152506135b0608085018561330d565b601f198584030160a08601526135c7838284613370565b925050506135d760a08501612e01565b80151560c0850152509392505050565b602080825281018290525f6040600584901b8301810190830185835b8681101561365e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086850301835261363c828961346c565b6136478682846134cc565b955050506020928301929190910190600101613603565b50919695505050505050565b8051612a7a81612f5a565b805161ffff81168114612a7a575f5ffd5b805163ffffffff81168114612a7a575f5ffd5b805160038110612a7a575f5ffd5b5f6102c08284031280156136b9575f5ffd5b506136c26131fe565b825181526136d260208401613185565b60208201526136e36040840161366a565b6040820152606083810151908201526080808401519082015261370860a08401613185565b60a082015261371960c08401613675565b60c082015261372a60e08401613675565b60e082015261373c6101008401613686565b61010082015261374f6101208401613686565b6101208201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e08084015190820152610200808401519082015261022080840151908201526137ba610240840161366a565b6102408201526137cd610260840161366a565b6102608201526137e061028084016131ab565b6102808201526137f36102a08401613699565b6102a08201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110613862577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b815181526020808301516102c083019161388a908401826001600160a01b03169052565b50604083015161389f604084018260ff169052565b50606083015160608301526080830151608083015260a08301516138ce60a08401826001600160a01b03169052565b5060c08301516138e460c084018261ffff169052565b5060e08301516138fa60e084018261ffff169052565b5061010083015161391461010084018263ffffffff169052565b5061012083015161392e61012084018263ffffffff169052565b506101408301516101408301526101608301516101608301526101808301516101808301526101a08301516101a08301526101c08301516101c08301526101e08301516101e08301526102008301516102008301526102208301516102208301526102408301516139a561024084018260ff169052565b506102608301516139bc61026084018260ff169052565b506102808301516139d261028084018215159052565b506102a08301516139e76102a084018261382d565b5092915050565b5f602082840312156139fe575f5ffd5b610d3d82613675565b5f5f60408385031215613a18575f5ffd5b82516020840151909250613a2b81612f5a565b809150509250929050565b61ffff8181168382160190811115612ad057612ad06130b1565b5f60ff831680613a6257613a626130f1565b8060ff8416069150509291505056fea2646970667358221220f4c8867718347a36b78af802e0cd056a1370653d1299dc2724a299b99519179d64736f6c634300081d00330000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000e9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc", - "nonce": "0xcc", + "input": "0x610160604052348015610010575f5ffd5b5060405161446738038061446783398101604081905261002f916103ad565b6001600160a01b0380851660e052838116608081905283821660a05290821660c0526040805163311176d760e01b8152905163311176d7916004808201926020929091908290030181865afa15801561008a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100ae91906103fe565b6001600160a01b0316610100816001600160a01b031681525050826001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610104573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061012891906103fe565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a291906103fe565b6001600160a01b039081166101405260e05160805160405163095ea7b360e01b815290831660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156101fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021f919061041e565b50610100516101205160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610274573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610298919061041e565b506101205160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af11580156102ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610310919061041e565b506101005160805160405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610364573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610388919061041e565b505050505061043d565b80516001600160a01b03811681146103a8575f5ffd5b919050565b5f5f5f5f608085870312156103c0575f5ffd5b6103c985610392565b93506103d760208601610392565b92506103e560408601610392565b91506103f360608601610392565b905092959194509250565b5f6020828403121561040e575f5ffd5b61041782610392565b9392505050565b5f6020828403121561042e575f5ffd5b81518015158114610417575f5ffd5b60805160a05160c05160e051610100516101205161014051613e3c61062b5f395f818161026f01528181612c2701528181612cd30152612d7101525f81816103f10152818161082b0152818161091f01528181610a2c01528181610ac901528181610b3b01528181610b7401528181610dcd01528181611184015281816112bc01528181611d1401528181611f12015281816120060152818161270901528181612745015281816127d601526128ac01525f818161023c01528181610a8b01528181610ba301528181610bc801528181610c7301528181610ce901528181610d57015281816110b40152818161112a015281816111e90152818161128a015281816117920152818161180e015281816120c30152818161219d01528181612246015281816122d601528181612371015281816127a50152818161287d01528181612a8501528181612b120152612bc701525f81816101a3015281816129c001526129fb01525f81816104240152818161166001526116ef01525f81816102b6015281816122a7015281816123a0015261242301525f818161034d0152818161085f01528181610fc6015281816114b50152818161154501528181611a1301528181611b1c01528181611bd101528181611dfa01528181611f460152818161256801526126600152613e3c5ff3fe608060405260043610610140575f3560e01c80637aea9eab116100bb578063ca38e8cc11610071578063ea81deb411610057578063ea81deb4146103c1578063eb91d0f5146103e0578063f98d06f014610413575f5ffd5b8063ca38e8cc1461038e578063e2230a42146103ad575f5ffd5b806389d7f33c116100a157806389d7f33c1461031d57806396ebfb891461033c578063b500cf771461036f575f5ffd5b80637aea9eab146102f757806381f139f41461030a575f5ffd5b8063311176d71161011057806339b90b99116100f657806339b90b991461029157806343d2c350146102a557806362355638146102d8575f5ffd5b8063311176d71461022b57806331d31efb1461025e575f5ffd5b806307ecbf3c1461014b57806317fcb39b1461019257806321679a2e146101dd578063248391ff146101fe575f5ffd5b3661014757005b5f5ffd5b348015610156575f5ffd5b5061016a610165366004613093565b610446565b6040805194855260208501939093529183015260ff1660608201526080015b60405180910390f35b34801561019d575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610189565b3480156101e8575f5ffd5b506101fc6101f73660046130ef565b610824565b005b348015610209575f5ffd5b5061021d610218366004613121565b610a09565b604051908152602001610189565b348015610236575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b348015610269575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c575f5ffd5b506101fc610dca565b3480156102b0575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e3575f5ffd5b506101fc6102f2366004613121565b611071565b61016a610305366004613177565b6113af565b61016a6103183660046131dd565b611659565b348015610328575f5ffd5b506101fc6103373660046132a1565b61178b565b348015610347575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561037a575f5ffd5b506101fc6103893660046132d3565b611a10565b348015610399575f5ffd5b506101fc6103a83660046130ef565b611f0b565b3480156103b8575f5ffd5b506101fc6120c0565b3480156103cc575f5ffd5b506101fc6103db366004613312565b61223f565b3480156103eb575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b34801561041e575f5ffd5b506101c57f000000000000000000000000000000000000000000000000000000000000000081565b5f808080610454858061333c565b610465906080810190606001613378565b156106b6575f5b610476868061333c565b610484906040810190613393565b90508110156106b057610497868061333c565b6104a5906040810190613393565b828181106104b5576104b56133fe565b90506020020160208101906104ca919061342b565b6001600160a01b031663c686692260026104e4898061333c565b6104ee9080613393565b858181106104fe576104fe6133fe565b9050602002013560016105119190613473565b61051b91906134b3565b6040518263ffffffff1660e01b815260040161053991815260200190565b602060405180830381865afa158015610554573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057891906134c6565b6105829086613473565b94505f806105d561059960608a0160408b0161342b565b60026105a58b8061333c565b6105af9080613393565b878181106105bf576105bf6133fe565b905060200201356105d091906134b3565b61252a565b945091508390506105e6888061333c565b6105f4906040810190613393565b84818110610604576106046133fe565b9050602002016020810190610619919061342b565b6001600160a01b031663c6866922836040518263ffffffff1660e01b815260040161064691815260200190565b602060405180830381865afa158015610661573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068591906134c6565b6106908360026134dd565b61069a91906134f4565b6106a49086613473565b9450505060010161046c565b5061081d565b5f5b6106c2868061333c565b6106d0906040810190613393565b905081101561081b575f8061071e6106ee60608a0160408b0161342b565b6106f88a8061333c565b6107029080613393565b86818110610712576107126133fe565b9050602002013561252a565b909250905061072d8286613473565b945092508261073c888061333c565b61074a906040810190613393565b8481811061075a5761075a6133fe565b905060200201602081019061076f919061342b565b6001600160a01b031663c68669226107886002856134b3565b6040518263ffffffff1660e01b81526004016107a691815260200190565b602060405180830381865afa1580156107c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107e591906134c6565b6107ef9087613473565b95506107fc600283613507565b6001036108115761080e600187613473565b95505b50506001016106b8565b505b9193509193565b5f610850847f000000000000000000000000000000000000000000000000000000000000000084610a09565b905061085c8482612707565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd9190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af1158015610967573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098b919061354b565b506040517ff9b1a9ad00000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b0382169063f9b1a9ad906044015b5f604051808303815f87803b1580156109ec575f5ffd5b505af11580156109fe573d5f5f3e3d5ffd5b505050505050505050565b5f826001600160a01b0316846001600160a01b031603610a2a575080610dc3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610b39576040517f4af218260000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03818116600484015260248301859052610b329286917f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401602060405180830381865afa158015610b0e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021891906134c6565b9050610dc3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610c71577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166396846de07f0000000000000000000000000000000000000000000000000000000000000000610bed877f000000000000000000000000000000000000000000000000000000000000000087610a09565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015b602060405180830381865afa158015610c4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3291906134c6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610d18576040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018490527f00000000000000000000000000000000000000000000000000000000000000001690634af2182690604401610c32565b6040517f96846de00000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906396846de090604401602060405180830381865afa158015610d9c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc091906134c6565b90505b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa158015610e26573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e4d91908101906135ee565b90505f5b815181101561106d57818181518110610e6c57610e6c6133fe565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80294d930000000000000000000000000000000000000000000000000000000060048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa158015610ef3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f17919061354b565b15611065575f828281518110610f2f57610f2f6133fe565b60200260200101516001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f72573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f969190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529192509082169063095ea7b3906044016020604051808303815f875af115801561103e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611062919061354b565b50505b600101610e51565b5050565b816001600160a01b0316836001600160a01b03160361108f57505050565b805f0361109b57505050565b6110b2335b6001600160a01b038516903084612909565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614611182576040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015f604051808303815f87803b15801561116b575f5ffd5b505af115801561117d573d5f5f3e3d5ffd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611316576040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611236573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125a91906134c6565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192507f0000000000000000000000000000000000000000000000000000000000000000909116906347e7ef24906044015f604051808303815f87803b1580156112ff575f5ffd5b505af1158015611311573d5f5f3e3d5ffd5b505050505b6113aa336040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015611375573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139991906134c6565b6001600160a01b0385169190612985565b505050565b5f5f5f5f6113bc87610446565b92965090945092509050831561144f5784841115611435576113e4606088016040890161342b565b6040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260248101859052604481018690526064015b60405180910390fd5b61144f6114486060890160408a0161342b565b85886129b6565b82156114b257848311156114a8576040517f02ec024a0000000000000000000000000000000000000000000000000000000081526001600160a01b0389166004820152602481018490526044810186905260640161142c565b6114b28884612a83565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf42ffa478a6040518363ffffffff1660e01b8152600401611500919061388a565b60206040518083038185885af115801561151c573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061154191906134c6565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561159f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c39190613525565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015611637575f5ffd5b505af1158015611649573d5f5f3e3d5ffd5b5050505050945094509450949050565b5f5f5f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d47eed458c8c6040518363ffffffff1660e01b81526004016116ac92919061397c565b602060405180830381865afa1580156116c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906134c6565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef9e5e28828d8d6040518463ffffffff1660e01b815260040161173c92919061397c565b5f604051808303818588803b158015611753575f5ffd5b505af1158015611765573d5f5f3e3d5ffd5b5050505050611776898989896113af565b929e919d509b50909950975050505050505050565b5f6117b7837f000000000000000000000000000000000000000000000000000000000000000084610a09565b90505f6117c385612bf6565b90506117cf8483612a83565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015611854573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611878919061354b565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063b6b55f25906024016020604051808303815f875af11580156118d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fa91906134c6565b506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611960573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061198491906134c6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156119e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a08919061354b565b505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a919190613525565b6040517f581a7ab0000000000000000000000000000000000000000000000000000000008152600481018590529091505f906001600160a01b0383169063581a7ab0906024016102c060405180830381865afa158015611af3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190613a3c565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e78bede836040518263ffffffff1660e01b8152600401611b669190613bfb565b602060405180830381865afa158015611b81573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ba59190613d83565b61ffff1690505f611bc3611bb884612dea565b836127106001612e41565b9050611bcf8782612707565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4f9190613525565b6001600160a01b03166323b872dd336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152306024820152604481018990526064015f604051808303815f87803b158015611cc1575f5ffd5b505af1158015611cd3573d5f5f3e3d5ffd5b50506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152602482018590527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303815f875af1158015611d5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d80919061354b565b506040517f8fb702200000000000000000000000000000000000000000000000000000000081526004810187905260ff861660248201526001600160a01b03851690638fb70220906044015f604051808303815f87803b158015611de2575f5ffd5b505af1158015611df4573d5f5f3e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d7e24f2c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e789190613525565b6001600160a01b03166323b872dd30336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018990526064015f604051808303815f87803b158015611eec575f5ffd5b505af1158015611efe573d5f5f3e3d5ffd5b5050505050505050505050565b5f611f37847f000000000000000000000000000000000000000000000000000000000000000084610a09565b9050611f438482612707565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b3ccbcfe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc49190613525565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af115801561204e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612072919061354b565b506040517f40b369c100000000000000000000000000000000000000000000000000000000815260048101859052602481018390526001600160a01b038216906340b369c1906044016109d5565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d3c7c2c76040518163ffffffff1660e01b81526004015f60405180830381865afa15801561211c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261214391908101906135ee565b90505f5b815181101561106d57818181518110612162576121626133fe565b60209081029190910101516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529091169063095ea7b3906044016020604051808303815f875af1158015612212573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612236919061354b565b50600101612147565b5f61226b837f000000000000000000000000000000000000000000000000000000000000000084610a09565b90506122778382612a83565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af115801561231c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612340919061354b565b506040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015f604051808303815f87803b1580156123e1575f5ffd5b505af11580156123f3573d5f5f3e3d5ffd5b50506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063a9059cbb9150339083906370a0823190602401602060405180830381865afa15801561247c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124a091906134c6565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612500573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612524919061354b565b50505050565b6040517f013745180000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f91829182917f000000000000000000000000000000000000000000000000000000000000000090911690630137451890602401602060405180830381865afa1580156125af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125d39190613525565b6040517f9097548d000000000000000000000000000000000000000000000000000000008152600481018690529091506001600160a01b03821690639097548d906024016040805180830381865afa158015612631573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126559190613d9c565b80935081945050505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f43bde6d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126de9190613d83565b90506126fc846126f083612710613dcb565b61ffff16612710612e8c565b935050509250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036127755761106d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316333084612909565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa15801561281d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284191906134c6565b905061284d8382612a83565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044015b5f604051808303815f87803b1580156128ee575f5ffd5b505af1158015612900573d5f5f3e3d5ffd5b50505050505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526125249186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612f3c565b6040516001600160a01b038381166024830152604482018390526113aa91859182169063a9059cbb9060640161293e565b8080156129f457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b15612a6e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015612a52575f5ffd5b505af1158015612a64573d5f5f3e3d5ffd5b5050505050505050565b6113aa6001600160a01b038416333085612909565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603612ad15761106d6001600160a01b038316333084612909565b6040517f4af218260000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018390525f917f000000000000000000000000000000000000000000000000000000000000000090911690634af2182690604401602060405180830381865afa158015612b59573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7d91906134c6565b9050612b88336110a0565b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906347e7ef24906044016128d7565b6040517f7fe9a7e6000000000000000000000000000000000000000000000000000000008152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637fe9a7e690602401602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c989190613525565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063c3c5a54790602401602060405180830381865afa158015612d1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3e919061354b565b612de5576040517f22fa95c4000000000000000000000000000000000000000000000000000000008152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906322fa95c4906024016020604051808303815f875af1158015612dbf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de39190613525565b505b919050565b5f612e0b826101c00151836101a00151612e049190613473565b8390612fc1565b826101800151836101e00151846101600151612e2791906134f4565b612e3191906134f4565b612e3b91906134f4565b92915050565b5f612e6e612e4e8361300b565b8015612e6957505f8480612e6457612e64613486565b868809115b151590565b612e79868686612e8c565b612e839190613473565b95945050505050565b5f5f5f612e998686613037565b91509150815f03612ebd57838181612eb357612eb3613486565b0492505050610dc3565b818411612ed457612ed46003851502601118613072565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f5f60205f8451602086015f885af180612f5b576040513d5f823e3d81fd5b50505f513d91508115612f72578060011415612f7f565b6001600160a01b0384163b155b15612524576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161142c565b5f8261014001515f03612fd557505f612e3b565b610dc382846101800151856101e00151866101600151612ff591906134f4565b612fff91906134f4565b8561014001515f612e41565b5f600282600381111561302057613020613b95565b61302a9190613de5565b60ff166001149050919050565b5f807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f60c08284031215612de3575f5ffd5b5f602082840312156130a3575f5ffd5b813567ffffffffffffffff8111156130b9575f5ffd5b6130c584828501613083565b949350505050565b6001600160a01b03811681146130e1575f5ffd5b50565b8035612de5816130cd565b5f5f5f60608486031215613101575f5ffd5b833561310c816130cd565b95602085013595506040909401359392505050565b5f5f5f60608486031215613133575f5ffd5b833561313e816130cd565b9250602084013561314e816130cd565b929592945050506040919091013590565b80151581146130e1575f5ffd5b8035612de58161315f565b5f5f5f5f6080858703121561318a575f5ffd5b8435613195816130cd565b9350602085013567ffffffffffffffff8111156131b0575f5ffd5b6131bc87828801613083565b93505060408501356131cd8161315f565b9396929550929360600135925050565b5f5f5f5f5f5f60a087890312156131f2575f5ffd5b863567ffffffffffffffff811115613208575f5ffd5b8701601f81018913613218575f5ffd5b803567ffffffffffffffff81111561322e575f5ffd5b8960208260051b8401011115613242575f5ffd5b6020918201975095506132569088016130e4565b9350604087013567ffffffffffffffff811115613271575f5ffd5b61327d89828a01613083565b93505061328c6060880161316c565b95989497509295919493608090920135925050565b5f5f5f606084860312156132b3575f5ffd5b83359250602084013561314e816130cd565b60ff811681146130e1575f5ffd5b5f5f5f606084860312156132e5575f5ffd5b83356132f0816130cd565b9250602084013591506040840135613307816132c5565b809150509250925092565b5f5f60408385031215613323575f5ffd5b823561332e816130cd565b946020939093013593505050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261336e575f5ffd5b9190910192915050565b5f60208284031215613388575f5ffd5b8135610dc38161315f565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133c6575f5ffd5b83018035915067ffffffffffffffff8211156133e0575f5ffd5b6020019150600581901b36038213156133f7575f5ffd5b9250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561343b575f5ffd5b8135610dc3816130cd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612e3b57612e3b613446565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826134c1576134c1613486565b500490565b5f602082840312156134d6575f5ffd5b5051919050565b8082028115828204841417612e3b57612e3b613446565b81810381811115612e3b57612e3b613446565b5f8261351557613515613486565b500690565b8051612de5816130cd565b5f60208284031215613535575f5ffd5b8151610dc3816130cd565b8051612de58161315f565b5f6020828403121561355b575f5ffd5b8151610dc38161315f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516102c0810167ffffffffffffffff811182821017156135b7576135b7613566565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156135e6576135e6613566565b604052919050565b5f602082840312156135fe575f5ffd5b815167ffffffffffffffff811115613614575f5ffd5b8201601f81018413613624575f5ffd5b805167ffffffffffffffff81111561363e5761363e613566565b8060051b61364e602082016135bd565b91825260208184018101929081019087841115613669575f5ffd5b6020850194505b838510156136975784519250613685836130cd565b82825260209485019490910190613670565b979650505050505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136d5575f5ffd5b830160208101925035905067ffffffffffffffff8111156136f4575f5ffd5b8060051b36038213156133f7575f5ffd5b8183526020830192505f815f5b84811015613743578135613725816130cd565b6001600160a01b031686526020958601959190910190600101613712565b5093949350505050565b5f61375882836136a2565b60a085528060a08601527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561378e575f5ffd5b60051b808260c08701378401905060208301356137aa816132c5565b60ff1660208501526137bf60408401846136a2565b60c08684030160408701526137d860c084018284613705565b925050506137e86060840161316c565b1515606085015260809283013592909301919091525090565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613834575f5ffd5b830160208101925035905067ffffffffffffffff811115613853575f5ffd5b8036038213156133f7575f5ffd5b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b602081525f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618436030181126138c0575f5ffd5b60c060208401526138d660e0840185830161374d565b90506138e56020850185613801565b601f198584030160408601526138fc838284613861565b9250505061390c604085016130e4565b6001600160a01b038116606085015250613928606085016130e4565b6001600160a01b03811660808501525061394560808501856136a2565b601f198584030160a086015261395c838284613705565b9250505061396c60a0850161316c565b80151560c0850152509392505050565b602080825281018290525f6040600584901b8301810190830185835b868110156139f3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08685030183526139d18289613801565b6139dc868284613861565b955050506020928301929190910190600101613998565b50919695505050505050565b8051612de5816132c5565b805161ffff81168114612de5575f5ffd5b805163ffffffff81168114612de5575f5ffd5b805160038110612de5575f5ffd5b5f6102c0828403128015613a4e575f5ffd5b50613a57613593565b82518152613a676020840161351a565b6020820152613a78604084016139ff565b60408201526060838101519082015260808084015190820152613a9d60a0840161351a565b60a0820152613aae60c08401613a0a565b60c0820152613abf60e08401613a0a565b60e0820152613ad16101008401613a1b565b610100820152613ae46101208401613a1b565b6101208201526101408381015190820152610160808401519082015261018080840151908201526101a080840151908201526101c080840151908201526101e0808401519082015261020080840151908201526102208084015190820152613b4f61024084016139ff565b610240820152613b6261026084016139ff565b610260820152613b756102808401613540565b610280820152613b886102a08401613a2e565b6102a08201529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110613bf7577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b815181526020808301516102c0830191613c1f908401826001600160a01b03169052565b506040830151613c34604084018260ff169052565b50606083015160608301526080830151608083015260a0830151613c6360a08401826001600160a01b03169052565b5060c0830151613c7960c084018261ffff169052565b5060e0830151613c8f60e084018261ffff169052565b50610100830151613ca961010084018263ffffffff169052565b50610120830151613cc361012084018263ffffffff169052565b506101408301516101408301526101608301516101608301526101808301516101808301526101a08301516101a08301526101c08301516101c08301526101e08301516101e0830152610200830151610200830152610220830151610220830152610240830151613d3a61024084018260ff169052565b50610260830151613d5161026084018260ff169052565b50610280830151613d6761028084018215159052565b506102a0830151613d7c6102a0840182613bc2565b5092915050565b5f60208284031215613d93575f5ffd5b610dc382613a0a565b5f5f60408385031215613dad575f5ffd5b82516020840151909250613dc0816132c5565b809150509250929050565b61ffff8181168382160190811115612e3b57612e3b613446565b5f60ff831680613df757613df7613486565b8060ff8416069150509291505056fea26469706673582212201a2fd7bdc52876d804fee0ff9bcea14f185d6b81fdbaddaf2f184c10506c152664736f6c634300081e00330000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e9d69cdd6fe41e7b621b4a688c5d1a68cb5c8adc", + "nonce": "0x11b", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x991277aa74e582736c60a2111cef213a0962a481b5868a470806445f45fb8a19", + "hash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", "transactionType": "CALL", "contractName": "Router", - "contractAddress": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "function": "approveCollaterals()", "arguments": [], "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "to": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", - "gas": "0x12303", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "gas": "0x13400", "value": "0x0", "input": "0x39b90b99", - "nonce": "0xcd", + "nonce": "0x11c", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x25511f15fd46bc9ecc65b94e734e2e9f7c596c1f2dda6aae7d0a7dcd22b8ec6a", + "hash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", "transactionType": "CALL", "contractName": "Router", - "contractAddress": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "function": "approveUsdTokens()", "arguments": [], "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "to": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", - "gas": "0x317db", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", + "gas": "0x2ec03", "value": "0x0", "input": "0xe2230a42", - "nonce": "0xce", + "nonce": "0x11d", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xa03b6c9951d090cf16db4d6cc36e06ab7bf505476a5c7d089832f50aeb62fc34", + "hash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", "transactionType": "CREATE", "contractName": "RolloverVault", - "contractAddress": "0x0c1f272b1f56f428855c41d3c903e13638438770", + "contractAddress": "0x859af9ffedb32f204b5662e774aff1e38c6070c3", "function": null, "arguments": null, "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "gas": "0x51ccdf", "value": "0x0", - "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161498e6100f95f395f81816129a8015281816129d10152612b78015261498e5ff3fe6080604052600436106102b9575f3560e01c80636e8e052d11610170578063a217fddf116100d1578063cc3c70eb11610087578063db9fe41e11610062578063db9fe41e14610907578063dd62ed3e14610926578063eb91d0f514610989575f5ffd5b8063cc3c70eb146108aa578063d547741f146108c9578063db006a75146108e8575f5ffd5b8063a9059cbb116100b7578063a9059cbb14610824578063ad3cb1cc14610843578063ae60f92a1461088b575f5ffd5b8063a217fddf146107bc578063a8c94d1b146107cf575f5ffd5b80638bf5fc691161012657806395d89b411161010c57806395d89b411461073157806396b298c51461074557806396ebfb8914610780575f5ffd5b80638bf5fc69146106ba57806391d14854146106ce575f5ffd5b806374cf09631161015657806374cf0963146106325780637a997ab71461065157806389f91ece14610684575f5ffd5b80636e8e052d146105cb57806370a08231146105df575f5ffd5b80632f2ff15d1161021a57806336568abe116101d05780634f1ef286116101b65780634f1ef2861461056e57806352d1902d146105815780635c975abb14610595575f5ffd5b806336568abe1461053057806347e7ef241461054f575f5ffd5b8063313ce56711610200578063313ce567146104a557806331d31efb146104e9578063364bc15a146104fd575f5ffd5b80632f2ff15d1461045a578063311176d714610479575f5ffd5b806316c38b3c1161026f5780631fb207fd116102555780631fb207fd146103cf57806323b872dd146103ee578063248a9ca31461040d575f5ffd5b806316c38b3c1461037b57806318160ddd1461039c575f5ffd5b8063069ed1241161029f578063069ed1241461031a57806306fdde031461033b578063095ea7b31461035c575f5ffd5b806301e1d114146102c457806301ffc9a7146102eb575f5ffd5b366102c057005b5f5ffd5b3480156102cf575f5ffd5b506102d86109c5565b6040519081526020015b60405180910390f35b3480156102f6575f5ffd5b5061030a610305366004613ece565b6109d3565b60405190151581526020016102e2565b348015610325575f5ffd5b5061032e610a2f565b6040516102e29190613f0d565b348015610346575f5ffd5b5061034f610ab2565b6040516102e29190613f58565b348015610367575f5ffd5b5061030a610376366004613fcf565b610b85565b348015610386575f5ffd5b5061039a610395366004614006565b610b9c565b005b3480156103a7575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102d8565b3480156103da575f5ffd5b5061039a6103e9366004614142565b610be0565b3480156103f9575f5ffd5b5061030a6104083660046141ec565b610d5d565b348015610418575f5ffd5b506102d861042736600461422a565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b348015610465575f5ffd5b5061039a610474366004614241565b610d82565b348015610484575f5ffd5b5061048d610dcb565b6040516001600160a01b0390911681526020016102e2565b3480156104b0575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff90911681526020016102e2565b3480156104f4575f5ffd5b5061048d610dfd565b348015610508575f5ffd5b506102d87ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b34801561053b575f5ffd5b5061039a61054a366004614241565b610e8e565b34801561055a575f5ffd5b5061039a610569366004613fcf565b610edf565b61039a61057c36600461426f565b61102c565b34801561058c575f5ffd5b506102d8611047565b3480156105a0575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661030a565b3480156105d6575f5ffd5b5061032e611075565b3480156105ea575f5ffd5b506102d86105f93660046142cf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b34801561063d575f5ffd5b5061039a61064c366004614373565b61109d565b34801561065c575f5ffd5b506102d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b34801561068f575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1661030a565b3480156106c5575f5ffd5b5061032e61121c565b3480156106d9575f5ffd5b5061030a6106e8366004614241565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561073c575f5ffd5b5061034f61129c565b348015610750575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166104d7565b34801561078b575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031661048d565b3480156107c7575f5ffd5b506102d85f81565b3480156107da575f5ffd5b5061030a6107e93660046142cf565b6001600160a01b03165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0046020526040902054151590565b34801561082f575f5ffd5b5061030a61083e366004613fcf565b6112ed565b34801561084e575f5ffd5b5061034f6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610896575f5ffd5b5061039a6108a53660046142cf565b6112fa565b3480156108b5575f5ffd5b5061039a6108c4366004614006565b611660565b3480156108d4575f5ffd5b5061039a6108e3366004614241565b6116d1565b3480156108f3575f5ffd5b5061039a61090236600461422a565b611714565b348015610912575f5ffd5b5061039a610921366004613fcf565b6117fa565b348015610931575f5ffd5b506102d861094036600461445c565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610994575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031661048d565b5f6109ce611b88565b905090565b5f6109dd82611fad565b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa610c25b00000000000000000000000000000000000000000000000000000000145b92915050565b60607f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b600301805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a8a575b5050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2f90614488565b8015610b7a5780601f10610b5157610100808354040283529160200191610b7a565b820191905f5260205f20905b815481529060010190602001808311610b5d57829003601f168201915b505050505091505090565b5f33610b92818585612184565b5060019392505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610bc681612191565b8115610bd857610bd461219e565b5050565b610bd4612213565b5f610be961226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610c155750825b90505f8267ffffffffffffffff166001148015610c315750303b155b905081158015610c3f575080155b15610c76576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610cd75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ce48b8b8b8b8b612293565b610cee5f876124b5565b508315610d505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b5f33610d6a858285612581565b610d7585858561262f565b60019150505b9392505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610dbb81612191565b610dc583836124b5565b50505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b546001600160a01b0316919050565b5f610e2f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031690565b6001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906144d9565b6001600160a01b0381163314610ed0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eda82826126be565b505050565b610ee7612762565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615610f3b57610f3b7fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760336127c0565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003610fba576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f610fc5825f61284c565b9050610fd133826128d4565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a3610eda6001600160a01b038416333085612921565b61103461299d565b61103d82612a44565b610bd48282612a4e565b5f611050612b6d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000610a53565b5f6110a661226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110d25750825b90505f8267ffffffffffffffff1660011480156110ee5750303b155b9050811580156110fc575080155b15611133576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6111a28c8c8c8c8c8c612bcf565b6111ac5f876124b5565b50831561120e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000600101805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610a8a575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b5f33610b9281858561262f565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61132481612191565b61132c612bf5565b6001600160a01b0382165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00460205260408120547f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00091036113c7576040517fc4342a360000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610fb1565b6003810180546113d990600190614521565b815481106113e9576113e9614534565b5f9182526020808320909101546001600160a01b03868116845260048501909252604090922054911690600383019061142490600190614521565b8154811061143457611434614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055918516815260048301918290526040812054919060038401611496600185614521565b815481106114a6576114a6614534565b5f9182526020808320909101546001600160a01b03908116845283820194909452604092830182209490945591861682526004840190925290812055600381018054806114f5576114f5614561565b600190038181905f5260205f20015f6101000a8154906001600160a01b03021916905590556115268360015f612c50565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611583573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a7919061458e565b604080516001600160a01b0387168152602081018390529192507f8fb0a322853526c9ca98819a150cb63ad67f3a8b1729fd7bfc442e6ee958ae58910160405180910390a16040517fdb006a75000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0385169063db006a75906024015f604051808303815f87803b158015611644575f5ffd5b505af1158015611656573d5f5f3e3d5ffd5b5050505050505050565b5f61166a81612191565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461170a81612191565b610dc583836126be565b61171c612762565b5f611727825f6130b0565b9050611733338361325b565b5f61173c611075565b90508060405161174c91906145a5565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca848660405161178f9291906145e3565b60405180910390a35f5b8151811015610dc5576117f2338483815181106117b8576117b8614534565b60200260200101518484815181106117d2576117d2614534565b60200260200101516001600160a01b03166132a89092919063ffffffff16565b600101611799565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61182481612191565b61182c612bf5565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000611855610dfd565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152919091169063c3c5a54790602401602060405180830381865afa1580156118b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d8919061462f565b611919576040517fda339c3b0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b825f03611952576040517f43ad20fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526004820160205260408120549003611a2a57600381015461198290600161464a565b6001600160a01b0385165f8181526004840160209081526040822093909355600384018054600181810183559183529390912090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790556119ed90859080612c50565b6040516001600160a01b03851681527f986ce7afdb969fbc71f1a2053eceba46b05f76dc8b60dd917457b25437d9b96c9060200160405180910390a15b604080516001600160a01b0386168152602081018590527f1bd8521111218958363445b6d1876aee0263dca2b541378702bc4d0b96c930de910160405180910390a1611a74610dcb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052919091169063095ea7b3906044016020604051808303815f875af1158015611adb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aff919061462f565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0385169063b6b55f25906024016020604051808303815f875af1158015611b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b81919061458e565b5050505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00081805b6003830154811015611e63575f836003018281548110611bcf57611bcf614534565b5f918252602080832090910154604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216945084926318160ddd926004808401938290030181865afa158015611c37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5b919061458e565b90505f611c66610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa158015611cc5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce9919061458e565b90505f611d1d7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015611d7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da0919061458e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015611e00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e24919061458e565b9050611e318183866132d9565b611e3c8285876132d9565b611e46919061464a565b611e50908861464a565b96505060019094019350611bad92505050565b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b03166040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f10919061458e565b611f18610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f99919061458e565b611fa3919061464a565b610d7b908261464a565b5f611fb782613389565b8061200357507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061204f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061209b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806120e757507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061213357507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b610eda838383600161341f565b61219b81336127c0565b50565b6121a6612762565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b61221b612bf5565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336121f5565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610a29565b61229b613547565b6122a58585613585565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612302573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232691906144d9565b815f8151811061233857612338614534565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183525f939192909183019080368337019050509050826001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d291906144d9565b815f815181106123e4576123e4614534565b60200260200101906001600160a01b031690816001600160a01b031681525050826001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612440573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246491906144d9565b8160018151811061247757612477614534565b60200260200101906001600160a01b031690816001600160a01b0316815250506124a3858584846135e8565b6124ac8361373a565b50505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612578575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561252e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a29565b5f915050610a29565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610dc55781811015612621576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610fb1565b610dc584848484035f61341f565b6001600160a01b038316612671576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0382166126b3576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610eda838383613919565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612578575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a29565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127be576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610bd4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610fb1565b5f610d7b6128817f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61288c90600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546128b8919061464a565b6128c06109c5565b6128cb90600161464a565b85919085613a7e565b6001600160a01b038216612916576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd45f8383613919565b6040516001600160a01b038481166024830152838116604483015260648201839052610dc59186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ac9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a0d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a01613b4e565b6001600160a01b031614155b156127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bd481612191565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ac6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612ac39181019061458e565b60015b612b07576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b63576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610fb1565b610eda8383613b75565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bd7613547565b612be18686613585565b612bed848484846135e8565b505050505050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127be576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0008215612e93578115612cdf576003810180546001810182555f828152602080822090920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389169081179091559254928152600484019091526040902055612e4e565b600381018054612cf190600190614521565b81548110612d0157612d01614534565b5f9182526020808320909101546001600160a01b038781168452600485019092526040909220549116906003830190612d3c90600190614521565b81548110612d4c57612d4c614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526004830191829052604081205460038401805491939291612db390600190614521565b81548110612dc357612dc3614534565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205560038101805480612dfa57612dfa614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260048301905260408120555b80600301604051612e5f919061474e565b604051908190038120907f53eeb669b1028bb347702c6124c167d5d820361ca1cfd53ee0ad3347bf9f196c905f90a2610dc5565b8115612efc576001818101805491820181555f818152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891690811790915591549181526002840190925260409091205561306a565b600180820180549091612f0e91614521565b81548110612f1e57612f1e614534565b5f9182526020808320909101546001600160a01b03878116845260028501909252604090922054911690600183810191612f589190614521565b81548110612f6857612f68614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526002830191829052604081205460018481018054929493929091612fcf91614521565b81548110612fdf57612fdf614534565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556001810180548061301657613016614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260028301905260408120555b8060010160405161307b919061474e565b604051908190038120907f6f2baeadf0ba25956481826abc672bf631af70b52c0fdbd0919f4785387845b1905f90a250505050565b60605f6130bb611075565b5167ffffffffffffffff8111156130d4576130d4614021565b6040519080825280602002602001820160405280156130fd578160200160208202803683370190505b5090505f5b61310a611075565b518110156132535761322e61311d611075565b828151811061312e5761312e614534565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613195573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b9919061458e565b6131c490600161464a565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166131f990600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254613225919061464a565b87919087613a7e565b82828151811061324057613240614534565b6020908102919091010152600101613102565b509392505050565b6001600160a01b03821661329d576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd4825f83613919565b6040516001600160a01b03838116602483015260448201839052610eda91859182169063a9059cbb90606401612956565b5f5f5f6132e68686613bca565b91509150815f0361330a5783818161330057613300614785565b0492505050610d7b565b818411613321576133216003851502601118613be6565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a2957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a29565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613482576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0384166134c4576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611b8157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161353891815260200190565b60405180910390a35050505050565b61354f613bf7565b6127be576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61358d613547565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135d984826147f6565b5060048101610dc583826147f6565b6135f0613547565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506136609060018301906020860190613e3f565b505f5b83518110156136b95761367781600161464a565b826002015f86848151811061368e5761368e614534565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613663565b5081516136cf9060038301906020850190613e3f565b505f5b8251811015613728576136e681600161464a565b826004015f8584815181106136fd576136fd614534565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016136d2565b50600501805460ff1916905550505050565b613742613547565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517f311176d700000000000000000000000000000000000000000000000000000000815290517f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000929163311176d79160048083019260209291908290030181865afa15801561380b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061382f91906144d9565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03918216178255604080517feb91d0f500000000000000000000000000000000000000000000000000000000815290519184169163eb91d0f5916004808201926020929091908290030181865afa1580156138b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138db91906144d9565b60019190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166139665781816002015f82825461395b919061464a565b909155506139ef9050565b6001600160a01b0384165f90815260208290526040902054828110156139d1576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610fb1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316613a0d576002810180548390039055613a2b565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a7091815260200190565b60405180910390a350505050565b5f613aab613a8b83613c15565b8015613aa657505f8480613aa157613aa1614785565b868809115b151590565b613ab68686866132d9565b613ac0919061464a565b95945050505050565b5f5f60205f8451602086015f885af180613ae8576040513d5f823e3d81fd5b50505f513d91508115613aff578060011415613b0c565b6001600160a01b0384163b155b15610dc5576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dee565b613b7e82613c41565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613bc257610eda8282613ce8565b610bd4613d51565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f613c0061226b565b5468010000000000000000900460ff16919050565b5f6002826003811115613c2a57613c2a6148cf565b613c3491906148fc565b60ff166001149050919050565b806001600160a01b03163b5f03613c8f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613d049190614942565b5f60405180830381855af49150503d805f8114613d3c576040519150601f19603f3d011682016040523d82523d5f602084013e613d41565b606091505b5091509150613ac0858383613d89565b34156127be576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082613d9e57613d9982613dfe565b610d7b565b8151158015613db557506001600160a01b0384163b155b15613df7576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5080610d7b565b805115613e0d57805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215613eaa579160200282015b82811115613eaa57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190613e5d565b50613eb6929150613eba565b5090565b5b80821115613eb6575f8155600101613ebb565b5f60208284031215613ede575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d7b575f5ffd5b602080825282518282018190525f918401906040840190835b81811015613f4d5783516001600160a01b0316835260209384019390920191600101613f26565b509095945050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6001600160a01b038116811461219b575f5ffd5b8035613fca81613fab565b919050565b5f5f60408385031215613fe0575f5ffd5b8235613feb81613fab565b946020939093013593505050565b801515811461219b575f5ffd5b5f60208284031215614016575f5ffd5b8135610d7b81613ff9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561409557614095614021565b604052919050565b5f5f67ffffffffffffffff8411156140b7576140b7614021565b50601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020016140ea8161404e565b9150508281528383830111156140fe575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112614123575f5ffd5b610d7b8383356020850161409d565b803560ff81168114613fca575f5ffd5b5f5f5f5f5f5f60c08789031215614157575f5ffd5b863567ffffffffffffffff81111561416d575f5ffd5b61417989828a01614114565b965050602087013567ffffffffffffffff811115614195575f5ffd5b6141a189828a01614114565b9550506141b060408801614132565b93506141be60608801614132565b925060808701356141ce81613fab565b915060a08701356141de81613fab565b809150509295509295509295565b5f5f5f606084860312156141fe575f5ffd5b833561420981613fab565b9250602084013561421981613fab565b929592945050506040919091013590565b5f6020828403121561423a575f5ffd5b5035919050565b5f5f60408385031215614252575f5ffd5b82359150602083013561426481613fab565b809150509250929050565b5f5f60408385031215614280575f5ffd5b823561428b81613fab565b9150602083013567ffffffffffffffff8111156142a6575f5ffd5b8301601f810185136142b6575f5ffd5b6142c58582356020840161409d565b9150509250929050565b5f602082840312156142df575f5ffd5b8135610d7b81613fab565b5f82601f8301126142f9575f5ffd5b813567ffffffffffffffff81111561431357614313614021565b8060051b6143236020820161404e565b9182526020818501810192908101908684111561433e575f5ffd5b6020860192505b8383101561436957823561435881613fab565b825260209283019290910190614345565b9695505050505050565b5f5f5f5f5f5f5f60e0888a031215614389575f5ffd5b873567ffffffffffffffff81111561439f575f5ffd5b6143ab8a828b01614114565b975050602088013567ffffffffffffffff8111156143c7575f5ffd5b6143d38a828b01614114565b9650506143e260408901614132565b94506143f060608901614132565b9350608088013567ffffffffffffffff81111561440b575f5ffd5b6144178a828b016142ea565b93505060a088013567ffffffffffffffff811115614433575f5ffd5b61443f8a828b016142ea565b92505061444e60c08901613fbf565b905092959891949750929550565b5f5f6040838503121561446d575f5ffd5b823561447881613fab565b9150602083013561426481613fab565b600181811c9082168061449c57607f821691505b6020821081036144d3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156144e9575f5ffd5b8151610d7b81613fab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a2957610a296144f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6020828403121561459e575f5ffd5b5051919050565b81515f90829060208501835b828110156145d85781516001600160a01b03168452602093840193909101906001016145b1565b509195945050505050565b604080825283519082018190525f9060208501906060840190835b8181101561461c5783518352602093840193909201916001016145fe565b5050602093909301939093525092915050565b5f6020828403121561463f575f5ffd5b8151610d7b81613ff9565b80820180821115610a2957610a296144f4565b6001815b60018411156146985780850481111561467c5761467c6144f4565b600184161561468a57908102905b60019390931c928002614661565b935093915050565b5f826146ae57506001610a29565b816146ba57505f610a29565b81600181146146d057600281146146da576146f6565b6001915050610a29565b60ff8411156146eb576146eb6144f4565b50506001821b610a29565b5060208310610133831016604e8410600b8410161715614719575081810a610a29565b6147255f19848461465d565b805f1904821115614738576147386144f4565b029392505050565b5f610d7b60ff8416836146a0565b5f818354839150845f5260205f205f5b828110156145d85781546001600160a01b031684526020909301926001918201910161475e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b601f821115610eda57805f5260205f20601f840160051c810160208510156147d75750805b601f840160051c820191505b81811015611b81575f81556001016147e3565b815167ffffffffffffffff81111561481057614810614021565b6148248161481e8454614488565b846147b2565b6020601f821160018114614856575f831561483f5750848201515b5f19600385901b1c1916600184901b178455611b81565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156148a35787850151825560209485019460019092019101614883565b50848210156148c057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614933577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fea26469706673582212202292bc03cd6d07ca3399b32aa071ed3ebb83afb20780a64f9ca3f2573db773f464736f6c634300081d0033", - "nonce": "0xcf", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161498e6100f95f395f81816129a8015281816129d10152612b78015261498e5ff3fe6080604052600436106102b9575f3560e01c80636e8e052d11610170578063a217fddf116100d1578063cc3c70eb11610087578063db9fe41e11610062578063db9fe41e14610907578063dd62ed3e14610926578063eb91d0f514610989575f5ffd5b8063cc3c70eb146108aa578063d547741f146108c9578063db006a75146108e8575f5ffd5b8063a9059cbb116100b7578063a9059cbb14610824578063ad3cb1cc14610843578063ae60f92a1461088b575f5ffd5b8063a217fddf146107bc578063a8c94d1b146107cf575f5ffd5b80638bf5fc691161012657806395d89b411161010c57806395d89b411461073157806396b298c51461074557806396ebfb8914610780575f5ffd5b80638bf5fc69146106ba57806391d14854146106ce575f5ffd5b806374cf09631161015657806374cf0963146106325780637a997ab71461065157806389f91ece14610684575f5ffd5b80636e8e052d146105cb57806370a08231146105df575f5ffd5b80632f2ff15d1161021a57806336568abe116101d05780634f1ef286116101b65780634f1ef2861461056e57806352d1902d146105815780635c975abb14610595575f5ffd5b806336568abe1461053057806347e7ef241461054f575f5ffd5b8063313ce56711610200578063313ce567146104a557806331d31efb146104e9578063364bc15a146104fd575f5ffd5b80632f2ff15d1461045a578063311176d714610479575f5ffd5b806316c38b3c1161026f5780631fb207fd116102555780631fb207fd146103cf57806323b872dd146103ee578063248a9ca31461040d575f5ffd5b806316c38b3c1461037b57806318160ddd1461039c575f5ffd5b8063069ed1241161029f578063069ed1241461031a57806306fdde031461033b578063095ea7b31461035c575f5ffd5b806301e1d114146102c457806301ffc9a7146102eb575f5ffd5b366102c057005b5f5ffd5b3480156102cf575f5ffd5b506102d86109c5565b6040519081526020015b60405180910390f35b3480156102f6575f5ffd5b5061030a610305366004613ece565b6109d3565b60405190151581526020016102e2565b348015610325575f5ffd5b5061032e610a2f565b6040516102e29190613f0d565b348015610346575f5ffd5b5061034f610ab2565b6040516102e29190613f58565b348015610367575f5ffd5b5061030a610376366004613fcf565b610b85565b348015610386575f5ffd5b5061039a610395366004614006565b610b9c565b005b3480156103a7575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546102d8565b3480156103da575f5ffd5b5061039a6103e9366004614142565b610be0565b3480156103f9575f5ffd5b5061030a6104083660046141ec565b610d5d565b348015610418575f5ffd5b506102d861042736600461422a565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b348015610465575f5ffd5b5061039a610474366004614241565b610d82565b348015610484575f5ffd5b5061048d610dcb565b6040516001600160a01b0390911681526020016102e2565b3480156104b0575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff90911681526020016102e2565b3480156104f4575f5ffd5b5061048d610dfd565b348015610508575f5ffd5b506102d87ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b34801561053b575f5ffd5b5061039a61054a366004614241565b610e8e565b34801561055a575f5ffd5b5061039a610569366004613fcf565b610edf565b61039a61057c36600461426f565b61102c565b34801561058c575f5ffd5b506102d8611047565b3480156105a0575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1661030a565b3480156105d6575f5ffd5b5061032e611075565b3480156105ea575f5ffd5b506102d86105f93660046142cf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b34801561063d575f5ffd5b5061039a61064c366004614373565b61109d565b34801561065c575f5ffd5b506102d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b34801561068f575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1661030a565b3480156106c5575f5ffd5b5061032e61121c565b3480156106d9575f5ffd5b5061030a6106e8366004614241565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561073c575f5ffd5b5061034f61129c565b348015610750575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166104d7565b34801561078b575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031661048d565b3480156107c7575f5ffd5b506102d85f81565b3480156107da575f5ffd5b5061030a6107e93660046142cf565b6001600160a01b03165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0046020526040902054151590565b34801561082f575f5ffd5b5061030a61083e366004613fcf565b6112ed565b34801561084e575f5ffd5b5061034f6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610896575f5ffd5b5061039a6108a53660046142cf565b6112fa565b3480156108b5575f5ffd5b5061039a6108c4366004614006565b611660565b3480156108d4575f5ffd5b5061039a6108e3366004614241565b6116d1565b3480156108f3575f5ffd5b5061039a61090236600461422a565b611714565b348015610912575f5ffd5b5061039a610921366004613fcf565b6117fa565b348015610931575f5ffd5b506102d861094036600461445c565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610994575f5ffd5b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031661048d565b5f6109ce611b88565b905090565b5f6109dd82611fad565b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa610c25b00000000000000000000000000000000000000000000000000000000145b92915050565b60607f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b600301805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610a8a575b5050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2f90614488565b8015610b7a5780601f10610b5157610100808354040283529160200191610b7a565b820191905f5260205f20905b815481529060010190602001808311610b5d57829003601f168201915b505050505091505090565b5f33610b92818585612184565b5060019392505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610bc681612191565b8115610bd857610bd461219e565b5050565b610bd4612213565b5f610be961226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610c155750825b90505f8267ffffffffffffffff166001148015610c315750303b155b905081158015610c3f575080155b15610c76576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610cd75784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610ce48b8b8b8b8b612293565b610cee5f876124b5565b508315610d505784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b5f33610d6a858285612581565b610d7585858561262f565b60019150505b9392505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610dbb81612191565b610dc583836124b5565b50505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e0005b546001600160a01b0316919050565b5f610e2f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e002546001600160a01b031690565b6001600160a01b03166331d31efb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906144d9565b6001600160a01b0381163314610ed0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eda82826126be565b505050565b610ee7612762565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615610f3b57610f3b7fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760336127c0565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003610fba576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f610fc5825f61284c565b9050610fd133826128d4565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a3610eda6001600160a01b038416333085612921565b61103461299d565b61103d82612a44565b610bd48282612a4e565b5f611050612b6d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000610a53565b5f6110a661226b565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156110d25750825b90505f8267ffffffffffffffff1660011480156110ee5750303b155b9050811580156110fc575080155b15611133576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156111945784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6111a28c8c8c8c8c8c612bcf565b6111ac5f876124b5565b50831561120e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000600101805480602002602001604051908101604052809291908181526020018280548015610aa857602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610a8a575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b0390614488565b5f33610b9281858561262f565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61132481612191565b61132c612bf5565b6001600160a01b0382165f9081527f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00460205260408120547f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00091036113c7576040517fc4342a360000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610fb1565b6003810180546113d990600190614521565b815481106113e9576113e9614534565b5f9182526020808320909101546001600160a01b03868116845260048501909252604090922054911690600383019061142490600190614521565b8154811061143457611434614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03948516179055918516815260048301918290526040812054919060038401611496600185614521565b815481106114a6576114a6614534565b5f9182526020808320909101546001600160a01b03908116845283820194909452604092830182209490945591861682526004840190925290812055600381018054806114f5576114f5614561565b600190038181905f5260205f20015f6101000a8154906001600160a01b03021916905590556115268360015f612c50565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611583573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a7919061458e565b604080516001600160a01b0387168152602081018390529192507f8fb0a322853526c9ca98819a150cb63ad67f3a8b1729fd7bfc442e6ee958ae58910160405180910390a16040517fdb006a75000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0385169063db006a75906024015f604051808303815f87803b158015611644575f5ffd5b505af1158015611656573d5f5f3e3d5ffd5b5050505050505050565b5f61166a81612191565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461170a81612191565b610dc583836126be565b61171c612762565b5f611727825f6130b0565b9050611733338361325b565b5f61173c611075565b90508060405161174c91906145a5565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca848660405161178f9291906145e3565b60405180910390a35f5b8151811015610dc5576117f2338483815181106117b8576117b8614534565b60200260200101518484815181106117d2576117d2614534565b60200260200101516001600160a01b03166132a89092919063ffffffff16565b600101611799565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61182481612191565b61182c612bf5565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000611855610dfd565b6040517fc3c5a5470000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152919091169063c3c5a54790602401602060405180830381865afa1580156118b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d8919061462f565b611919576040517fda339c3b0000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b825f03611952576040517f43ad20fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384165f9081526004820160205260408120549003611a2a57600381015461198290600161464a565b6001600160a01b0385165f8181526004840160209081526040822093909355600384018054600181810183559183529390912090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790556119ed90859080612c50565b6040516001600160a01b03851681527f986ce7afdb969fbc71f1a2053eceba46b05f76dc8b60dd917457b25437d9b96c9060200160405180910390a15b604080516001600160a01b0386168152602081018590527f1bd8521111218958363445b6d1876aee0263dca2b541378702bc4d0b96c930de910160405180910390a1611a74610dcb565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015260248201869052919091169063095ea7b3906044016020604051808303815f875af1158015611adb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aff919061462f565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0385169063b6b55f25906024016020604051808303815f875af1158015611b5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b81919061458e565b5050505050565b5f7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00081805b6003830154811015611e63575f836003018281548110611bcf57611bcf614534565b5f918252602080832090910154604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216945084926318160ddd926004808401938290030181865afa158015611c37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c5b919061458e565b90505f611c66610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa158015611cc5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce9919061458e565b90505f611d1d7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015611d7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da0919061458e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015611e00573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e24919061458e565b9050611e318183866132d9565b611e3c8285876132d9565b611e46919061464a565b611e50908861464a565b96505060019094019350611bad92505050565b507f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e001546001600160a01b03166040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611eec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f10919061458e565b611f18610dcb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f99919061458e565b611fa3919061464a565b610d7b908261464a565b5f611fb782613389565b8061200357507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061204f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061209b57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806120e757507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061213357507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610a2957507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b610eda838383600161341f565b61219b81336127c0565b50565b6121a6612762565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b61221b612bf5565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336121f5565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610a29565b61229b613547565b6122a58585613585565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612302573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061232691906144d9565b815f8151811061233857612338614534565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183525f939192909183019080368337019050509050826001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123d291906144d9565b815f815181106123e4576123e4614534565b60200260200101906001600160a01b031690816001600160a01b031681525050826001600160a01b031663eb91d0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612440573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061246491906144d9565b8160018151811061247757612477614534565b60200260200101906001600160a01b031690816001600160a01b0316815250506124a3858584846135e8565b6124ac8361373a565b50505050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612578575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561252e3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a29565b5f915050610a29565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610dc55781811015612621576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024810182905260448101839052606401610fb1565b610dc584848484035f61341f565b6001600160a01b038316612671576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0382166126b3576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610eda838383613919565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612578575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a29565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156127be576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610bd4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401610fb1565b5f610d7b6128817f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61288c90600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546128b8919061464a565b6128c06109c5565b6128cb90600161464a565b85919085613a7e565b6001600160a01b038216612916576040517fec442f050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd45f8383613919565b6040516001600160a01b038481166024830152838116604483015260648201839052610dc59186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613ac9565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612a0d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612a01613b4e565b6001600160a01b031614155b156127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bd481612191565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ac6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612ac39181019061458e565b60015b612b07576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b63576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401610fb1565b610eda8383613b75565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146127be576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bd7613547565b612be18686613585565b612bed848484846135e8565b505050505050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166127be576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0008215612e93578115612cdf576003810180546001810182555f828152602080822090920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389169081179091559254928152600484019091526040902055612e4e565b600381018054612cf190600190614521565b81548110612d0157612d01614534565b5f9182526020808320909101546001600160a01b038781168452600485019092526040909220549116906003830190612d3c90600190614521565b81548110612d4c57612d4c614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526004830191829052604081205460038401805491939291612db390600190614521565b81548110612dc357612dc3614534565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205560038101805480612dfa57612dfa614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260048301905260408120555b80600301604051612e5f919061474e565b604051908190038120907f53eeb669b1028bb347702c6124c167d5d820361ca1cfd53ee0ad3347bf9f196c905f90a2610dc5565b8115612efc576001818101805491820181555f818152602080822090930180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891690811790915591549181526002840190925260409091205561306a565b600180820180549091612f0e91614521565b81548110612f1e57612f1e614534565b5f9182526020808320909101546001600160a01b03878116845260028501909252604090922054911690600183810191612f589190614521565b81548110612f6857612f68614534565b5f91825260208083209190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0394851617905591861681526002830191829052604081205460018481018054929493929091612fcf91614521565b81548110612fdf57612fdf614534565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556001810180548061301657613016614561565b5f828152602080822083015f1990810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559092019092556001600160a01b038616825260028301905260408120555b8060010160405161307b919061474e565b604051908190038120907f6f2baeadf0ba25956481826abc672bf631af70b52c0fdbd0919f4785387845b1905f90a250505050565b60605f6130bb611075565b5167ffffffffffffffff8111156130d4576130d4614021565b6040519080825280602002602001820160405280156130fd578160200160208202803683370190505b5090505f5b61310a611075565b518110156132535761322e61311d611075565b828151811061312e5761312e614534565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015613195573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b9919061458e565b6131c490600161464a565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff166131f990600a614740565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254613225919061464a565b87919087613a7e565b82828151811061324057613240614534565b6020908102919091010152600101613102565b509392505050565b6001600160a01b03821661329d576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b610bd4825f83613919565b6040516001600160a01b03838116602483015260448201839052610eda91859182169063a9059cbb90606401612956565b5f5f5f6132e68686613bca565b91509150815f0361330a5783818161330057613300614785565b0492505050610d7b565b818411613321576133216003851502601118613be6565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610a2957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610a29565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613482576040517fe602df050000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b0384166134c4576040517f94280d620000000000000000000000000000000000000000000000000000000081525f6004820152602401610fb1565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115611b8157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161353891815260200190565b60405180910390a35050505050565b61354f613bf7565b6127be576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61358d613547565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036135d984826147f6565b5060048101610dc583826147f6565b6135f0613547565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506136609060018301906020860190613e3f565b505f5b83518110156136b95761367781600161464a565b826002015f86848151811061368e5761368e614534565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613663565b5081516136cf9060038301906020850190613e3f565b505f5b8251811015613728576136e681600161464a565b826004015f8584815181106136fd576136fd614534565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016136d2565b50600501805460ff1916905550505050565b613742613547565b7f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e00280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117909155604080517f311176d700000000000000000000000000000000000000000000000000000000815290517f3f3d57a95a7cc1b3218bff2f60330bfeb789b9a101fe5e689535b16f8256e000929163311176d79160048083019260209291908290030181865afa15801561380b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061382f91906144d9565b81547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03918216178255604080517feb91d0f500000000000000000000000000000000000000000000000000000000815290519184169163eb91d0f5916004808201926020929091908290030181865afa1580156138b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138db91906144d9565b60019190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0390921691909117905550565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166139665781816002015f82825461395b919061464a565b909155506139ef9050565b6001600160a01b0384165f90815260208290526040902054828110156139d1576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810182905260448101849052606401610fb1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316613a0d576002810180548390039055613a2b565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a7091815260200190565b60405180910390a350505050565b5f613aab613a8b83613c15565b8015613aa657505f8480613aa157613aa1614785565b868809115b151590565b613ab68686866132d9565b613ac0919061464a565b95945050505050565b5f5f60205f8451602086015f885af180613ae8576040513d5f823e3d81fd5b50505f513d91508115613aff578060011415613b0c565b6001600160a01b0384163b155b15610dc5576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dee565b613b7e82613c41565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613bc257610eda8282613ce8565b610bd4613d51565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b5f613c0061226b565b5468010000000000000000900460ff16919050565b5f6002826003811115613c2a57613c2a6148cf565b613c3491906148fc565b60ff166001149050919050565b806001600160a01b03163b5f03613c8f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610fb1565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613d049190614942565b5f60405180830381855af49150503d805f8114613d3c576040519150601f19603f3d011682016040523d82523d5f602084013e613d41565b606091505b5091509150613ac0858383613d89565b34156127be576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082613d9e57613d9982613dfe565b610d7b565b8151158015613db557506001600160a01b0384163b155b15613df7576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610fb1565b5080610d7b565b805115613e0d57805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215613eaa579160200282015b82811115613eaa57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190613e5d565b50613eb6929150613eba565b5090565b5b80821115613eb6575f8155600101613ebb565b5f60208284031215613ede575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d7b575f5ffd5b602080825282518282018190525f918401906040840190835b81811015613f4d5783516001600160a01b0316835260209384019390920191600101613f26565b509095945050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b6001600160a01b038116811461219b575f5ffd5b8035613fca81613fab565b919050565b5f5f60408385031215613fe0575f5ffd5b8235613feb81613fab565b946020939093013593505050565b801515811461219b575f5ffd5b5f60208284031215614016575f5ffd5b8135610d7b81613ff9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561409557614095614021565b604052919050565b5f5f67ffffffffffffffff8411156140b7576140b7614021565b50601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020016140ea8161404e565b9150508281528383830111156140fe575f5ffd5b828260208301375f602084830101529392505050565b5f82601f830112614123575f5ffd5b610d7b8383356020850161409d565b803560ff81168114613fca575f5ffd5b5f5f5f5f5f5f60c08789031215614157575f5ffd5b863567ffffffffffffffff81111561416d575f5ffd5b61417989828a01614114565b965050602087013567ffffffffffffffff811115614195575f5ffd5b6141a189828a01614114565b9550506141b060408801614132565b93506141be60608801614132565b925060808701356141ce81613fab565b915060a08701356141de81613fab565b809150509295509295509295565b5f5f5f606084860312156141fe575f5ffd5b833561420981613fab565b9250602084013561421981613fab565b929592945050506040919091013590565b5f6020828403121561423a575f5ffd5b5035919050565b5f5f60408385031215614252575f5ffd5b82359150602083013561426481613fab565b809150509250929050565b5f5f60408385031215614280575f5ffd5b823561428b81613fab565b9150602083013567ffffffffffffffff8111156142a6575f5ffd5b8301601f810185136142b6575f5ffd5b6142c58582356020840161409d565b9150509250929050565b5f602082840312156142df575f5ffd5b8135610d7b81613fab565b5f82601f8301126142f9575f5ffd5b813567ffffffffffffffff81111561431357614313614021565b8060051b6143236020820161404e565b9182526020818501810192908101908684111561433e575f5ffd5b6020860192505b8383101561436957823561435881613fab565b825260209283019290910190614345565b9695505050505050565b5f5f5f5f5f5f5f60e0888a031215614389575f5ffd5b873567ffffffffffffffff81111561439f575f5ffd5b6143ab8a828b01614114565b975050602088013567ffffffffffffffff8111156143c7575f5ffd5b6143d38a828b01614114565b9650506143e260408901614132565b94506143f060608901614132565b9350608088013567ffffffffffffffff81111561440b575f5ffd5b6144178a828b016142ea565b93505060a088013567ffffffffffffffff811115614433575f5ffd5b61443f8a828b016142ea565b92505061444e60c08901613fbf565b905092959891949750929550565b5f5f6040838503121561446d575f5ffd5b823561447881613fab565b9150602083013561426481613fab565b600181811c9082168061449c57607f821691505b6020821081036144d3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156144e9575f5ffd5b8151610d7b81613fab565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610a2957610a296144f4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f6020828403121561459e575f5ffd5b5051919050565b81515f90829060208501835b828110156145d85781516001600160a01b03168452602093840193909101906001016145b1565b509195945050505050565b604080825283519082018190525f9060208501906060840190835b8181101561461c5783518352602093840193909201916001016145fe565b5050602093909301939093525092915050565b5f6020828403121561463f575f5ffd5b8151610d7b81613ff9565b80820180821115610a2957610a296144f4565b6001815b60018411156146985780850481111561467c5761467c6144f4565b600184161561468a57908102905b60019390931c928002614661565b935093915050565b5f826146ae57506001610a29565b816146ba57505f610a29565b81600181146146d057600281146146da576146f6565b6001915050610a29565b60ff8411156146eb576146eb6144f4565b50506001821b610a29565b5060208310610133831016604e8410600b8410161715614719575081810a610a29565b6147255f19848461465d565b805f1904821115614738576147386144f4565b029392505050565b5f610d7b60ff8416836146a0565b5f818354839150845f5260205f205f5b828110156145d85781546001600160a01b031684526020909301926001918201910161475e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b601f821115610eda57805f5260205f20601f840160051c810160208510156147d75750805b601f840160051c820191505b81811015611b81575f81556001016147e3565b815167ffffffffffffffff81111561481057614810614021565b6148248161481e8454614488565b846147b2565b6020601f821160018114614856575f831561483f5750848201515b5f19600385901b1c1916600184901b178455611b81565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156148a35787850151825560209485019460019092019101614883565b50848210156148c057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614933577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b8060ff84160691505092915050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220ca0177e67119173218ea015485a8084a2d534adbff99a8b4cc9e0bf649acaf5964736f6c634300081e0033", + "nonce": "0x11e", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x3b9db990acdb3e3d25def7b789f630ae7bb1d63b633af03f139d5fc0649aa96a", + "hash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", "transactionType": "CREATE", "contractName": "ERC1967Proxy.default", - "contractAddress": "0x3f93fabbf59b808cc47487dd211dd782020c98dc", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", "function": null, "arguments": [ - "0x0c1f272B1f56f428855c41d3C903E13638438770", - "0x1fb207fd00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c560000000000000000000000000000000000000000000000000000000000" + "0x859Af9FfeDb32f204B5662E774aff1e38c6070C3", + "0x1fb207fd00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c560000000000000000000000000000000000000000000000000000000000" ], "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "gas": "0xa44b7", "value": "0x0", - "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220662c538b1b0760530d1209e16fb2e3cad89924077f857e3be9e272e06a1cb82764736f6c634300081d00330000000000000000000000000c1f272b1f56f428855c41d3c903e13638438770000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001441fb207fd00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xd0", + "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220d07c17b7f4c9cda4be02a3d984724a3d1a355fce48b658787cd5928f0ce89fd464736f6c634300081e0033000000000000000000000000859af9ffedb32f204b5662e774aff1e38c6070c3000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001441fb207fd00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000006000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000000e526f6c6c6f766572205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003524c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x11f", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xb73c05e6fbd05a24b79180c084fd823b6a4fbd360225a1726738736c52d324fc", + "hash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "gas": "0x141ac", + "value": "0x0", + "input": "0x2f2ff15dfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x120", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xd5b1dd57aaefffe77f455c934afaabbf42e3aa25c08a7476f93f88ddbcf7eb22", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "gas": "0xaaf5", + "value": "0x0", + "input": "0x2f2ff15d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x121", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", "transactionType": "CREATE", "contractName": "FulfillmentVault", - "contractAddress": "0x85658b88fd1568c1b49f3f1f9f537837e2ea70ec", + "contractAddress": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec", "function": null, "arguments": null, "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "gas": "0x586fa9", + "gas": "0x5891c8", "value": "0x0", - "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614f916100f95f395f81816128d6015281816128ff0152612a880152614f915ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b50610357610352366004614051565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f91906140be565b348015610393575f5ffd5b506103576103a23660046140f4565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d736600461412b565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b50610357610455366004614146565b610dce565b348015610465575f5ffd5b50610325610474366004614184565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d536600461419b565b610e84565b3480156104e5575f5ffd5b506103bb6104f43660046142ea565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c636600461419b565b61104c565b3480156105d6575f5ffd5b506103bb6105e53660046140f4565b61109d565b3480156105f5575f5ffd5b506103bb6106043660046143ce565b611278565b348015610614575f5ffd5b506103bb6106233660046140f4565b6113e5565b6103bb61063636600461446b565b611532565b348015610646575f5ffd5b5061032561154d565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961157b565b60405161032f91906144cb565b3480156106b1575f5ffd5b506103256106c0366004614516565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb61071336600461459f565b6115fd565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611702565b3480156107a0575f5ffd5b506103576107af36600461419b565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611782565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b03660046140f4565b6117d3565b3480156108c0575f5ffd5b506103bb6108cf366004614516565b6117e0565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb61098536600461469d565b6118b0565b348015610995575f5ffd5b506103bb6109a436600461412b565b611932565b3480156109b4575f5ffd5b506103bb6109c33660046140f4565b6119a3565b3480156109d3575f5ffd5b506103bb6109e236600461419b565b611a22565b3480156109f2575f5ffd5b506103bb610a01366004614184565b611a65565b348015610a11575f5ffd5b506103bb610a20366004614184565b611b5f565b348015610a30575f5ffd5b50610325610a3f3660046146b9565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa23660046146f6565b611c45565b348015610ab2575f5ffd5b506103bb610ac13660046140f4565b611dbb565b348015610ad1575f5ffd5b506103bb611ea1565b5f610ae3611f14565b905090565b5f610af282611fc7565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061474f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc19061474f565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c2481858561219e565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb891906147a0565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d82816121ab565b8115610d9457610d906121b8565b5050565b610d9061222d565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb858285612285565b610de6858585612333565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147c2565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd816121ab565b610ec783836123c2565b50505050565b5f610ed661248e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c6124b6565b610fdc5f876123c2565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110988282612591565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c7816121ab565b6110cf612635565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d891906147dd565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a2816121ab565b6112aa612635565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de6147f8565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f81518110611329576113296147f8565b6020026020010181905250836040516113429190614825565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b1929190614894565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505050505050565b6113ed612692565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615611441576114417fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760336126ee565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b002602052604081205490036114c0576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f6114cb825f61277a565b90506114d73382612802565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b03841633308561284f565b61153a6128cb565b61154382612972565b610d90828261297c565b5f611556612a7d565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006003018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115d5575b5050505050905090565b5f61160661248e565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116325750825b90505f8267ffffffffffffffff16600114801561164e5750303b155b90508115801561165c575080155b15611693576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116f45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612adf565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006001018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116115d5575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061474f565b5f33610c24818585612333565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b361182a610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561188c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9091906147dd565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6118da816121ab565b6118e2612635565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac48360405161191e91815260200190565b60405180910390a261109883836001612afd565b5f61193c816121ab565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6119cd816121ab565b6119d5612635565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611a1091815260200190565b60405180910390a26110988383612bba565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611a5b816121ab565b610ec78383612591565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611a8f816121ab565b611a97612635565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611b45575f5ffd5b505af1158015611b57573d5f5f3e3d5ffd5b505050505050565b611b67612692565b5f611b72825f612bd0565b9050611b7e3383612d7b565b5f611b8761157b565b905080604051611b979190614909565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611bda92919061493c565b60405180910390a35f5b8151811015610ec757611c3d33848381518110611c0357611c036147f8565b6020026020010151848481518110611c1d57611c1d6147f8565b60200260200101516001600160a01b0316612dc89092919063ffffffff16565b600101611be4565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611c6f816121ab565b611c77612635565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611d59611d348763ffffffff16612df9565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16612e18565b6003810180546fffffffffffffffffffffffffffffffff16905f611d7c8361498a565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611de5816121ab565b611ded612635565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611e2891815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611edc610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611f467f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611fa3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147a0565b5f611fd182612f18565b8061201d57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061206957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806120b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b8061210157507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061214d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b6110988383836001612fae565b6121b581336126ee565b50565b6121c0612692565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b612235612635565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361220f565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec75781811015612325576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016114b7565b610ec784848484035f612fae565b6001600160a01b038316612375576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b0382166123b7576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6110988383836130d6565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16612485575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561243b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b6124be61323b565b6124c88686613279565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612525573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254991906147c2565b815f8151811061255b5761255b6147f8565b60200260200101906001600160a01b031690816001600160a01b031681525050612587858583846132dc565b61126f838361342e565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615612485575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16612690576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615612690576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016114b7565b5f610dec6127af7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b6127ba90600a614aa9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546127e69190614ab7565b6127ee610ada565b6127f9906001614ab7565b85919085613558565b6001600160a01b038216612844576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d905f83836130d6565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506135a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061293b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661292f613628565b6001600160a01b031614155b15612690576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d90816121ab565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156129d6575060408051601f3d908101601f191682019092526129d3918101906147a0565b60015b612a17576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612a73576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016114b7565b611098838361364f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612690576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ae761323b565b612af18686613279565b611b57848484846132dc565b5f612b07846136a4565b90505f8215612b6757612b1a858561370a565b90508067ffffffffffffffff165f03612b62576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b612baf565b67ffffffffffffffff841115612bac576040517f857ccb8e000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b50825b610d51828683613816565b5f612bc4836138f1565b90506110988183613992565b60605f612bdb61157b565b5167ffffffffffffffff811115612bf457612bf46141c9565b604051908082528060200260200182016040528015612c1d578160200160208202803683370190505b5090505f5b612c2a61157b565b51811015612d7357612d4e612c3d61157b565b8281518110612c4e57612c4e6147f8565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612cb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cd991906147a0565b612ce4906001614ab7565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612d1990600a614aa9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612d459190614ab7565b87919087613558565b828281518110612d6057612d606147f8565b6020908102919091010152600101612c22565b509392505050565b6001600160a01b038216612dbd576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d90825f836130d6565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb90606401612884565b5f610b3e612e0983612710614aca565b67ffffffffffffffff16613aba565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f1981840301815290829052612eb7939291602001614b01565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401612ee291906140be565b5f604051808303815f87803b158015612ef9575f5ffd5b505af1158015612f0b573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613011576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b038416613053576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516130c791815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166131235781816002015f8282546131189190614ab7565b909155506131ac9050565b6001600160a01b0384165f908152602082905260409020548281101561318e576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016114b7565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166131ca5760028101805483900390556131e8565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161322d91815260200190565b60405180910390a350505050565b613243613b07565b612690576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61328161323b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036132cd8482614ba6565b5060048101610ec78382614ba6565b6132e461323b565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506133549060018301906020860190613fcb565b505f5b83518110156133ad5761336b816001614ab7565b826002015f868481518110613382576133826147f8565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613357565b5081516133c39060038301906020850190613fcb565b505f5b825181101561341c576133da816001614ab7565b826004015f8584815181106133f1576133f16147f8565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016133c6565b50600501805460ff1916905550505050565b61343661323b565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061351991906147c2565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f61358561356583613b25565b801561358057505f848061357b5761357b614c61565b868809115b151590565b613590868686613b51565b61359a9190614ab7565b95945050505050565b5f5f60205f8451602086015f885af1806135c2576040513d5f823e3d81fd5b50505f513d915081156135d95780600114156135e6565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b61365882613c01565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561369c576110988282613ca8565b610d90613d11565b5f6136ad613d49565b67ffffffffffffffff168267ffffffffffffffff16036136e25750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614c8e565b5f5f61371b8463ffffffff16613d67565b60808101519091506001600160a01b0316156137a6575f8160e001515f0b131561376f575f8160e00151600a6137519190614aa9565b61375b9085614cad565b905061376681613e73565b92505050610b3e565b5f8160e001515f0b12156137a1575f8160e0015161378c90614cc0565b61379790600a614aa9565b61375b9085614cfb565b6137d9565b6137af84613ec2565b156137d9576137d16137c2600a80614aa9565b6137cc9085614cad565b613e73565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff851660048201526024016114b7565b306001600160a01b03841603613858576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e13916138c6916001916006919060a001614b01565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161124691906140be565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613962573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139869190614d12565b63ffffffff1692915050565b5f61399d838361370a565b90508067ffffffffffffffff165f036139e5576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018390526024016114b7565b5f6139ef846136a4565b90506139fa84613ec2565b15613a8e575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114613a48576040519150601f19603f3d011682016040523d82523d5f602084013e613a4d565b606091505b5050905080613a88576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f613a9e8563ffffffff16613d67565b6080810151909150611b576001600160a01b0382168487612dc8565b5f63ffffffff821115613b03576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260206004820152602481018390526044016114b7565b5090565b5f613b1061248e565b5468010000000000000000900460ff16919050565b5f6002826003811115613b3a57613b3a614d2d565b613b449190614d5a565b60ff166001149050919050565b5f5f5f613b5e8686613ee8565b91509150815f03613b8257838181613b7857613b78614c61565b0492505050610dec565b818411613b9957613b996003851502601118613f04565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613c4f576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613cc49190614d7b565b5f60405180830381855af49150503d805f8114613cfc576040519150601f19603f3d011682016040523d82523d5f602084013e613d01565b606091505b509150915061359a858383613f15565b3415612690576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f466103e614613d5a576096613d5e565b6104515b61ffff16905090565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613dde91614d7b565b5f60405180830381855afa9150503d805f8114613e16576040519150601f19603f3d011682016040523d82523d5f602084013e613e1b565b606091505b509150915081613e57576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613e6b9190614e5d565b949350505050565b5f67ffffffffffffffff821115613b0357604080517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004810191909152602481018390526044016114b7565b5f613ecb613d49565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613f2a57613f2582613f8a565b610dec565b8151158015613f4157506001600160a01b0384163b155b15613f83576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5080610dec565b805115613f9957805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215614036579160200282015b8281111561403657825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190613fe9565b50613b039291505b80821115613b03575f815560010161403e565b5f60208284031215614061575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec6020830184614090565b6001600160a01b03811681146121b5575f5ffd5b80356140ef816140d0565b919050565b5f5f60408385031215614105575f5ffd5b8235614110816140d0565b946020939093013593505050565b80151581146121b5575f5ffd5b5f6020828403121561413b575f5ffd5b8135610dec8161411e565b5f5f5f60608486031215614158575f5ffd5b8335614163816140d0565b92506020840135614173816140d0565b929592945050506040919091013590565b5f60208284031215614194575f5ffd5b5035919050565b5f5f604083850312156141ac575f5ffd5b8235915060208301356141be816140d0565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff8111828210171561421a5761421a6141c9565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614249576142496141c9565b604052919050565b5f67ffffffffffffffff82111561426a5761426a6141c9565b50601f01601f191660200190565b5f61428a61428584614251565b614220565b905082815283838301111561429d575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126142c2575f5ffd5b610dec83833560208501614278565b60ff811681146121b5575f5ffd5b80356140ef816142d1565b5f5f5f5f5f5f5f60e0888a031215614300575f5ffd5b873567ffffffffffffffff811115614316575f5ffd5b6143228a828b016142b3565b975050602088013567ffffffffffffffff81111561433e575f5ffd5b61434a8a828b016142b3565b965050604088013561435b816142d1565b9450606088013561436b816142d1565b9350608088013561437b816140d0565b925060a088013561438b816140d0565b915060c088013561439b816140d0565b8091505092959891949750929550565b5f67ffffffffffffffff8211156143c4576143c46141c9565b5060051b60200190565b5f5f604083850312156143df575f5ffd5b82359150602083013567ffffffffffffffff8111156143fc575f5ffd5b8301601f8101851361440c575f5ffd5b803561441a614285826143ab565b8082825260208201915060208360051b85010192508783111561443b575f5ffd5b6020840193505b8284101561445d578335825260209384019390910190614442565b809450505050509250929050565b5f5f6040838503121561447c575f5ffd5b8235614487816140d0565b9150602083013567ffffffffffffffff8111156144a2575f5ffd5b8301601f810185136144b2575f5ffd5b6144c185823560208401614278565b9150509250929050565b602080825282518282018190525f918401906040840190835b8181101561450b5783516001600160a01b03168352602093840193909201916001016144e4565b509095945050505050565b5f60208284031215614526575f5ffd5b8135610dec816140d0565b5f82601f830112614540575f5ffd5b813561454e614285826143ab565b8082825260208201915060208360051b86010192508583111561456f575f5ffd5b602085015b83811015614595578035614587816140d0565b835260209283019201614574565b5095945050505050565b5f5f5f5f5f5f5f60e0888a0312156145b5575f5ffd5b873567ffffffffffffffff8111156145cb575f5ffd5b6145d78a828b016142b3565b975050602088013567ffffffffffffffff8111156145f3575f5ffd5b6145ff8a828b016142b3565b96505061460e604089016142df565b945061461c606089016142df565b9350608088013567ffffffffffffffff811115614637575f5ffd5b6146438a828b01614531565b93505060a088013567ffffffffffffffff81111561465f575f5ffd5b61466b8a828b01614531565b92505061467a60c089016140e4565b905092959891949750929550565b67ffffffffffffffff811681146121b5575f5ffd5b5f5f604083850312156146ae575f5ffd5b823561411081614688565b5f5f604083850312156146ca575f5ffd5b82356146d5816140d0565b915060208301356141be816140d0565b63ffffffff811681146121b5575f5ffd5b5f5f5f5f60808587031215614709575f5ffd5b8435614714816146e5565b935060208501356147248161411e565b9250604085013561473481614688565b9150606085013561474481614688565b939692955090935050565b600181811c9082168061476357607f821691505b60208210810361479a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156147b0575f5ffd5b5051919050565b80516140ef816140d0565b5f602082840312156147d2575f5ffd5b8151610dec816140d0565b5f602082840312156147ed575f5ffd5b8151610dec8161411e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b8281101561484f578151845260209384019390910190600101614831565b509195945050505050565b5f8151808452602084019350602083015f5b8281101561488a57815186526020958601959091019060010161486c565b5093949350505050565b604081525f6148a6604083018561485a565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156148fb57601f198684030185526148e583835161485a565b60209586019590935091909101906001016148c9565b509098975050505050505050565b81515f90829060208501835b8281101561484f5781516001600160a01b0316845260209384019390910190600101614915565b604081525f61494e604083018561485a565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff81036149bd576149bd61495d565b60010192915050565b6001815b6001841115614a01578085048111156149e5576149e561495d565b60018416156149f357908102905b60019390931c9280026149ca565b935093915050565b5f82614a1757506001610b3e565b81614a2357505f610b3e565b8160018114614a395760028114614a4357614a5f565b6001915050610b3e565b60ff841115614a5457614a5461495d565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614a82575081810a610b3e565b614a8e5f1984846149c6565b805f1904821115614aa157614aa161495d565b029392505050565b5f610dec60ff841683614a09565b80820180821115610b3e57610b3e61495d565b67ffffffffffffffff8181168382160190811115610b3e57610b3e61495d565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f61359a6004830184614aea565b601f82111561109857805f5260205f20601f840160051c81016020851015614b875750805b601f840160051c820191505b81811015610d51575f8155600101614b93565b815167ffffffffffffffff811115614bc057614bc06141c9565b614bd481614bce845461474f565b84614b62565b6020601f821160018114614c06575f8315614bef5750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614c355787850151825560209485019460019092019101614c15565b5084821015614c5257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e61495d565b5f82614cbb57614cbb614c61565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614cf357614cf361495d565b5f0392915050565b8082028115828204841417610b3e57610b3e61495d565b5f60208284031215614d22575f5ffd5b8151610dec816146e5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614d6c57614d6c614c61565b8060ff84160691505092915050565b5f610dec8284614aea565b5f82601f830112614d95575f5ffd5b8151614da361428582614251565b818152846020838601011115614db7575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516140ef81614688565b5f82601f830112614ded575f5ffd5b8151614dfb614285826143ab565b8082825260208201915060208360051b860101925085831115614e1c575f5ffd5b602085015b83811015614595578051614e3481614688565b835260209283019201614e21565b80516140ef816142d1565b80515f81900b81146140ef575f5ffd5b5f60208284031215614e6d575f5ffd5b815167ffffffffffffffff811115614e83575f5ffd5b82016101008185031215614e95575f5ffd5b614e9d6141f6565b815167ffffffffffffffff811115614eb3575f5ffd5b614ebf86828501614d86565b825250602082015167ffffffffffffffff811115614edb575f5ffd5b614ee786828501614dde565b602083015250614ef960408301614dd3565b6040820152614f0a606083016147b7565b6060820152614f1b608083016147b7565b6080820152614f2c60a08301614e42565b60a0820152614f3d60c08301614e42565b60c0820152614f4e60e08301614e4d565b60e082015294935050505056fea2646970667358221220c652e368e9558cc42d857717426ee9a05b770b468ff2fef91311dab8218ed71564736f6c634300081d0033", - "nonce": "0xd1", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614fb06100f95f395f81816128f50152818161291e0152612aa70152614fb05ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b50610357610352366004614070565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f91906140dd565b348015610393575f5ffd5b506103576103a2366004614113565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d736600461414a565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b50610357610455366004614165565b610dce565b348015610465575f5ffd5b506103256104743660046141a3565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d53660046141ba565b610e84565b3480156104e5575f5ffd5b506103bb6104f4366004614309565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c63660046141ba565b61104c565b3480156105d6575f5ffd5b506103bb6105e5366004614113565b61109d565b3480156105f5575f5ffd5b506103bb6106043660046143ed565b611278565b348015610614575f5ffd5b506103bb610623366004614113565b6113e5565b6103bb61063636600461448a565b611532565b348015610646575f5ffd5b5061032561154d565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961157b565b60405161032f91906144ea565b3480156106b1575f5ffd5b506103256106c0366004614535565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb6107133660046145be565b6115fd565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611702565b3480156107a0575f5ffd5b506103576107af3660046141ba565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611782565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b0366004614113565b6117d3565b3480156108c0575f5ffd5b506103bb6108cf366004614535565b6117e0565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb6109853660046146bc565b6118b0565b348015610995575f5ffd5b506103bb6109a436600461414a565b611932565b3480156109b4575f5ffd5b506103bb6109c3366004614113565b6119a3565b3480156109d3575f5ffd5b506103bb6109e23660046141ba565b611a41565b3480156109f2575f5ffd5b506103bb610a013660046141a3565b611a84565b348015610a11575f5ffd5b506103bb610a203660046141a3565b611b7e565b348015610a30575f5ffd5b50610325610a3f3660046146d8565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa2366004614715565b611c64565b348015610ab2575f5ffd5b506103bb610ac1366004614113565b611dda565b348015610ad1575f5ffd5b506103bb611ec0565b5f610ae3611f33565b905090565b5f610af282611fe6565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061476e565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc19061476e565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c248185856121bd565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb891906147bf565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d82816121ca565b8115610d9457610d906121d7565b5050565b610d9061224c565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb8582856122a4565b610de6858585612352565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147e1565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd816121ca565b610ec783836123e1565b50505050565b5f610ed66124ad565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c6124d5565b610fdc5f876123e1565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61109882826125b0565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c7816121ca565b6110cf612654565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d891906147fc565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a2816121ca565b6112aa612654565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de614817565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f8151811061132957611329614817565b6020026020010181905250836040516113429190614844565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b19291906148b3565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505050505050565b6113ed6126b1565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff1615611441576114417fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be67603361270d565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b002602052604081205490036114c0576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b5f6114cb825f612799565b90506114d73382612821565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b03841633308561286e565b61153a6128ea565b61154382612991565b610d90828261299b565b5f611556612a9c565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006003018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116115d5575b5050505050905090565b5f6116066124ad565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116325750825b90505f8267ffffffffffffffff16600114801561164e5750303b155b90508115801561165c575080155b15611693576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156116f45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612afe565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0006001018054806020026020016040519081016040528092919081815260200182805480156115f357602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116115d5575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b959061476e565b5f33610c24818585612352565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b361182a610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561188c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9091906147fc565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6118da816121ca565b6118e2612654565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac48360405161191e91815260200190565b60405180910390a261109883836001612b1c565b5f61193c816121ca565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6119cd816121ca565b6119d5612654565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611a1091815260200190565b60405180910390a26001600160a01b038316611a3757611098611a31612bd9565b83612bf7565b6110988383612d1f565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611a7a816121ca565b610ec783836125b0565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611aae816121ca565b611ab6612654565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611b64575f5ffd5b505af1158015611b76573d5f5f3e3d5ffd5b505050505050565b611b866126b1565b5f611b91825f612d35565b9050611b9d3383612ee0565b5f611ba661157b565b905080604051611bb69190614928565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611bf992919061495b565b60405180910390a35f5b8151811015610ec757611c5c33848381518110611c2257611c22614817565b6020026020010151848481518110611c3c57611c3c614817565b60200260200101516001600160a01b0316612f2d9092919063ffffffff16565b600101611c03565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611c8e816121ca565b611c96612654565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611d78611d538763ffffffff16612f5e565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16612f7d565b6003810180546fffffffffffffffffffffffffffffffff16905f611d9b836149a9565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611e04816121ca565b611e0c612654565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611e4791815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611efb610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611f657f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611fc2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae391906147bf565b5f611ff08261307d565b8061203c57507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061208857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806120d457507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b8061212057507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b8061216c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b6110988383836001613113565b6121d4813361270d565b50565b6121df6126b1565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b612254612654565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361222e565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec75781811015612344576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016114b7565b610ec784848484035f613113565b6001600160a01b038316612394576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b0382166123d6576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b61109883838361323b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff166124a4575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561245a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b6124dd6133a0565b6124e786866133de565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612544573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061256891906147e1565b815f8151811061257a5761257a614817565b60200260200101906001600160a01b031690816001600160a01b0316815250506125a685858384613441565b61126f8383613593565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16156124a4575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166126af576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156126af576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016114b7565b5f610dec6127ce7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b6127d990600a614ac8565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546128059190614ad6565b61280d610ada565b612818906001614ad6565b859190856136bd565b6001600160a01b038216612863576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d905f838361323b565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613708565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061295a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661294e61378d565b6001600160a01b031614155b156126af576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d90816121ca565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156129f5575060408051601f3d908101601f191682019092526129f2918101906147bf565b60015b612a36576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612a92576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016114b7565b61109883836137b4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146126af576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b066133a0565b612b1086866133de565b611b7684848484613441565b5f612b2684613809565b90505f8215612b8657612b39858561386f565b90508067ffffffffffffffff165f03612b81576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b612bce565b67ffffffffffffffff841115612bcb576040517f857ccb8e000000000000000000000000000000000000000000000000000000008152600481018590526024016114b7565b50825b610d5182868361397b565b5f466103e614612bea576096612bee565b6104515b61ffff16905090565b5f612c02838361386f565b90508067ffffffffffffffff165f03612c4a576040517f45641ba2000000000000000000000000000000000000000000000000000000008152600481018390526024016114b7565b5f612c5484613809565b9050612c5f84613a56565b15612cf3575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114612cad576040519150601f19603f3d011682016040523d82523d5f602084013e612cb2565b606091505b5050905080612ced576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f612d038563ffffffff16613a7c565b6080810151909150611b766001600160a01b0382168487612f2d565b5f612d2983613b88565b90506110988183612bf7565b60605f612d4061157b565b5167ffffffffffffffff811115612d5957612d596141e8565b604051908082528060200260200182016040528015612d82578160200160208202803683370190505b5090505f5b612d8f61157b565b51811015612ed857612eb3612da261157b565b8281518110612db357612db3614817565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612e1a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e3e91906147bf565b612e49906001614ad6565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612e7e90600a614ac8565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612eaa9190614ad6565b879190876136bd565b828281518110612ec557612ec5614817565b6020908102919091010152600101612d87565b509392505050565b6001600160a01b038216612f22576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b610d90825f8361323b565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb906064016128a3565b5f610b3e612f6e83612710614ae9565b67ffffffffffffffff16613c29565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f198184030181529082905261301c939291602001614b20565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161304791906140dd565b5f604051808303815f87803b15801561305e575f5ffd5b505af1158015613070573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613176576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b0384166131b8576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016114b7565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161322c91815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166132885781816002015f82825461327d9190614ad6565b909155506133119050565b6001600160a01b0384165f90815260208290526040902054828110156132f3576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016114b7565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b03831661332f57600281018054839003905561334d565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161339291815260200190565b60405180910390a350505050565b6133a8613c76565b6126af576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6133e66133a0565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036134328482614bc5565b5060048101610ec78382614bc5565b6134496133a0565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506134b99060018301906020860190613fea565b505f5b8351811015613512576134d0816001614ad6565b826002015f8684815181106134e7576134e7614817565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016134bc565b5081516135289060038301906020850190613fea565b505f5b82518110156135815761353f816001614ad6565b826004015f85848151811061355657613556614817565b6020908102919091018101516001600160a01b031682528101919091526040015f205560010161352b565b50600501805460ff1916905550505050565b61359b6133a0565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561365a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061367e91906147e1565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f6136ea6136ca83613c94565b80156136e557505f84806136e0576136e0614c80565b868809115b151590565b6136f5868686613cc0565b6136ff9190614ad6565b95945050505050565b5f5f60205f8451602086015f885af180613727576040513d5f823e3d81fd5b50505f513d9150811561373e57806001141561374b565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b6137bd82613d70565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115613801576110988282613e17565b610d90613e80565b5f613812612bd9565b67ffffffffffffffff168267ffffffffffffffff16036138475750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614cad565b5f5f6138808463ffffffff16613a7c565b60808101519091506001600160a01b03161561390b575f8160e001515f0b13156138d4575f8160e00151600a6138b69190614ac8565b6138c09085614ccc565b90506138cb81613eb8565b92505050610b3e565b5f8160e001515f0b1215613906575f8160e001516138f190614cdf565b6138fc90600a614ac8565b6138c09085614d1a565b61393e565b61391484613a56565b1561393e57613936613927600a80614ac8565b6139319085614ccc565b613eb8565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff851660048201526024016114b7565b306001600160a01b038416036139bd576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e1391613a2b916001916006919060a001614b20565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161124691906140dd565b5f613a5f612bd9565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613af391614d31565b5f60405180830381855afa9150503d805f8114613b2b576040519150601f19603f3d011682016040523d82523d5f602084013e613b30565b606091505b509150915081613b6c576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613b809190614e13565b949350505050565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613bf9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c1d9190614f11565b63ffffffff1692915050565b5f63ffffffff821115613c72576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260206004820152602481018390526044016114b7565b5090565b5f613c7f6124ad565b5468010000000000000000900460ff16919050565b5f6002826003811115613ca957613ca9614f2c565b613cb39190614f59565b60ff166001149050919050565b5f5f5f613ccd8686613f07565b91509150815f03613cf157838181613ce757613ce7614c80565b0492505050610dec565b818411613d0857613d086003851502601118613f23565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613dbe576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016114b7565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613e339190614d31565b5f60405180830381855af49150503d805f8114613e6b576040519150601f19603f3d011682016040523d82523d5f602084013e613e70565b606091505b50915091506136ff858383613f34565b34156126af576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f67ffffffffffffffff821115613c7257604080517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004810191909152602481018390526044016114b7565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613f4957613f4482613fa9565b610dec565b8151158015613f6057506001600160a01b0384163b155b15613fa2576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016114b7565b5080610dec565b805115613fb857805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f20908101928215614055579160200282015b8281111561405557825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614008565b50613c729291505b80821115613c72575f815560010161405d565b5f60208284031215614080575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec60208301846140af565b6001600160a01b03811681146121d4575f5ffd5b803561410e816140ef565b919050565b5f5f60408385031215614124575f5ffd5b823561412f816140ef565b946020939093013593505050565b80151581146121d4575f5ffd5b5f6020828403121561415a575f5ffd5b8135610dec8161413d565b5f5f5f60608486031215614177575f5ffd5b8335614182816140ef565b92506020840135614192816140ef565b929592945050506040919091013590565b5f602082840312156141b3575f5ffd5b5035919050565b5f5f604083850312156141cb575f5ffd5b8235915060208301356141dd816140ef565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff81118282101715614239576142396141e8565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614268576142686141e8565b604052919050565b5f67ffffffffffffffff821115614289576142896141e8565b50601f01601f191660200190565b5f6142a96142a484614270565b61423f565b90508281528383830111156142bc575f5ffd5b828260208301375f602084830101529392505050565b5f82601f8301126142e1575f5ffd5b610dec83833560208501614297565b60ff811681146121d4575f5ffd5b803561410e816142f0565b5f5f5f5f5f5f5f60e0888a03121561431f575f5ffd5b873567ffffffffffffffff811115614335575f5ffd5b6143418a828b016142d2565b975050602088013567ffffffffffffffff81111561435d575f5ffd5b6143698a828b016142d2565b965050604088013561437a816142f0565b9450606088013561438a816142f0565b9350608088013561439a816140ef565b925060a08801356143aa816140ef565b915060c08801356143ba816140ef565b8091505092959891949750929550565b5f67ffffffffffffffff8211156143e3576143e36141e8565b5060051b60200190565b5f5f604083850312156143fe575f5ffd5b82359150602083013567ffffffffffffffff81111561441b575f5ffd5b8301601f8101851361442b575f5ffd5b80356144396142a4826143ca565b8082825260208201915060208360051b85010192508783111561445a575f5ffd5b6020840193505b8284101561447c578335825260209384019390910190614461565b809450505050509250929050565b5f5f6040838503121561449b575f5ffd5b82356144a6816140ef565b9150602083013567ffffffffffffffff8111156144c1575f5ffd5b8301601f810185136144d1575f5ffd5b6144e085823560208401614297565b9150509250929050565b602080825282518282018190525f918401906040840190835b8181101561452a5783516001600160a01b0316835260209384019390920191600101614503565b509095945050505050565b5f60208284031215614545575f5ffd5b8135610dec816140ef565b5f82601f83011261455f575f5ffd5b813561456d6142a4826143ca565b8082825260208201915060208360051b86010192508583111561458e575f5ffd5b602085015b838110156145b45780356145a6816140ef565b835260209283019201614593565b5095945050505050565b5f5f5f5f5f5f5f60e0888a0312156145d4575f5ffd5b873567ffffffffffffffff8111156145ea575f5ffd5b6145f68a828b016142d2565b975050602088013567ffffffffffffffff811115614612575f5ffd5b61461e8a828b016142d2565b96505061462d604089016142fe565b945061463b606089016142fe565b9350608088013567ffffffffffffffff811115614656575f5ffd5b6146628a828b01614550565b93505060a088013567ffffffffffffffff81111561467e575f5ffd5b61468a8a828b01614550565b92505061469960c08901614103565b905092959891949750929550565b67ffffffffffffffff811681146121d4575f5ffd5b5f5f604083850312156146cd575f5ffd5b823561412f816146a7565b5f5f604083850312156146e9575f5ffd5b82356146f4816140ef565b915060208301356141dd816140ef565b63ffffffff811681146121d4575f5ffd5b5f5f5f5f60808587031215614728575f5ffd5b843561473381614704565b935060208501356147438161413d565b92506040850135614753816146a7565b91506060850135614763816146a7565b939692955090935050565b600181811c9082168061478257607f821691505b6020821081036147b9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f602082840312156147cf575f5ffd5b5051919050565b805161410e816140ef565b5f602082840312156147f1575f5ffd5b8151610dec816140ef565b5f6020828403121561480c575f5ffd5b8151610dec8161413d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b8281101561486e578151845260209384019390910190600101614850565b509195945050505050565b5f8151808452602084019350602083015f5b828110156148a957815186526020958601959091019060010161488b565b5093949350505050565b604081525f6148c56040830185614879565b828103602084015280845180835260208301915060208160051b840101602087015f5b8381101561491a57601f19868403018552614904838351614879565b60209586019590935091909101906001016148e8565b509098975050505050505050565b81515f90829060208501835b8281101561486e5781516001600160a01b0316845260209384019390910190600101614934565b604081525f61496d6040830185614879565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff81036149dc576149dc61497c565b60010192915050565b6001815b6001841115614a2057808504811115614a0457614a0461497c565b6001841615614a1257908102905b60019390931c9280026149e9565b935093915050565b5f82614a3657506001610b3e565b81614a4257505f610b3e565b8160018114614a585760028114614a6257614a7e565b6001915050610b3e565b60ff841115614a7357614a7361497c565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614aa1575081810a610b3e565b614aad5f1984846149e5565b805f1904821115614ac057614ac061497c565b029392505050565b5f610dec60ff841683614a28565b80820180821115610b3e57610b3e61497c565b67ffffffffffffffff8181168382160190811115610b3e57610b3e61497c565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f6136ff6004830184614b09565b601f82111561109857805f5260205f20601f840160051c81016020851015614ba65750805b601f840160051c820191505b81811015610d51575f8155600101614bb2565b815167ffffffffffffffff811115614bdf57614bdf6141e8565b614bf381614bed845461476e565b84614b81565b6020601f821160018114614c25575f8315614c0e5750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614c545787850151825560209485019460019092019101614c34565b5084821015614c7157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e61497c565b5f82614cda57614cda614c80565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614d1257614d1261497c565b5f0392915050565b8082028115828204841417610b3e57610b3e61497c565b5f610dec8284614b09565b5f82601f830112614d4b575f5ffd5b8151614d596142a482614270565b818152846020838601011115614d6d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b805161410e816146a7565b5f82601f830112614da3575f5ffd5b8151614db16142a4826143ca565b8082825260208201915060208360051b860101925085831115614dd2575f5ffd5b602085015b838110156145b4578051614dea816146a7565b835260209283019201614dd7565b805161410e816142f0565b80515f81900b811461410e575f5ffd5b5f60208284031215614e23575f5ffd5b815167ffffffffffffffff811115614e39575f5ffd5b82016101008185031215614e4b575f5ffd5b614e53614215565b815167ffffffffffffffff811115614e69575f5ffd5b614e7586828501614d3c565b825250602082015167ffffffffffffffff811115614e91575f5ffd5b614e9d86828501614d94565b602083015250614eaf60408301614d89565b6040820152614ec0606083016147d6565b6060820152614ed1608083016147d6565b6080820152614ee260a08301614df8565b60a0820152614ef360c08301614df8565b60c0820152614f0460e08301614e03565b60e0820152949350505050565b5f60208284031215614f21575f5ffd5b8151610dec81614704565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614f6b57614f6b614c80565b8060ff8416069150509291505056fea264697066735822122072f57a9323a55e6ab5d07ca6e166edbee355b6ac9cfec7884f38093c0260b15364736f6c634300081e0033", + "nonce": "0x122", "chainId": "0x3e7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x190db3b1881de2140d97414b4311b2cdbb9dff401a86bc2d3d9f92589a66e7db", + "hash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", "transactionType": "CREATE", "contractName": "ERC1967Proxy.default", - "contractAddress": "0x3d177625f3ac203c5aedfe5fad12c8f66b198436", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", "function": null, "arguments": [ - "0x85658B88fd1568c1B49F3f1F9F537837e2eA70Ec", - "0x2f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000120000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c560000000000000000000000000000000000000000000000000000000000" + "0xa0ad2a279929F40FB6DFe5E0914e64DF2aAf2beC", + "0x2f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000060000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c560000000000000000000000000000000000000000000000000000000000" ], "transaction": { "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "gas": "0x94647", "value": "0x0", - "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220662c538b1b0760530d1209e16fb2e3cad89924077f857e3be9e272e06a1cb82764736f6c634300081d003300000000000000000000000085658b88fd1568c1b49f3f1f9f537837e2ea70ec000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001642f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000120000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xd2", + "input": "0x60806040526040516103dc3803806103dc8339810160408190526100229161023b565b61002c8282610033565b5050610320565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030a565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020e57805160208201fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024c575f5ffd5b82516001600160a01b0381168114610262575f5ffd5b60208401519092506001600160401b0381111561027d575f5ffd5b8301601f8101851361028d575f5ffd5b80516001600160401b038111156102a6576102a6610227565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d4576102d4610227565b6040528181528282016020018710156102eb575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032c5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea2646970667358221220d07c17b7f4c9cda4be02a3d984724a3d1a355fce48b658787cd5928f0ce89fd464736f6c634300081e0033000000000000000000000000a0ad2a279929f40fb6dfe5e0914e64df2aaf2bec000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001642f7ce38a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000060000000000000000000000005555555555555555555555555555555555555555000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b000000000000000000000000000000000000000000000000000000000000001146756c66696c6c6d656e74205661756c740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464c56000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x123", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0x13008", + "value": "0x0", + "input": "0x2f2ff15dfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x124", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionType": "CALL", + "contractName": "ERC1967Proxy.default", + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0x13008", + "value": "0x0", + "input": "0x2f2ff15ddc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "nonce": "0x125", "chainId": "0x3e7" }, "additionalContracts": [], @@ -142,235 +219,235 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x3418bf", + "cumulativeGasUsed": "0x44800c", "logs": [ { "address": "0x5555555555555555555555555555555555555555", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", - "transactionIndex": "0x0", - "logIndex": "0x0", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x24", "removed": false }, { "address": "0x22632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x00000000000000000000000088e35cd2cc5845780058e997cbd3fd92e3345864" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", - "transactionIndex": "0x0", - "logIndex": "0x1", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x25", "removed": false }, { "address": "0x88e35cd2cc5845780058e997cbd3fd92e3345864", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", - "transactionIndex": "0x0", - "logIndex": "0x2", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x26", "removed": false }, { "address": "0x22632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", - "transactionIndex": "0x0", - "logIndex": "0x3", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "logIndex": "0x27", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000001000000000000020000000000000000000000000020000000000000000000000000000200000000000000000020002000000000000000000000000000000000000000000000000410000000000000000000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000000000000000000020200200000000000000000008001000000000000000000000000000000000002000000000000000000000000000000000000000080000000000000000000000010002000080000000000000002000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000001000000000000020000000000000000000000000020000000000000000800000000000200000000000000000020002000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000008000020000000000000000000000000080000000000000000000000000000000000000000000000020200000000000000000000008001000000000000000000000000000000020002000000000000000000000000000000000000000000000000000000000000000010002000080000000000000002000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xec37a2c8935bcd804a8a4e6c52199ac638fb8e10943f59807b46ff6212aefc26", - "transactionIndex": "0x0", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "gasUsed": "0x3418bf", - "effectiveGasPrice": "0x734b60e", + "transactionHash": "0x4b546d9d64bcfd95bef6fcead3a9284d86c1b07cb3fda1258e24985479ab8084", + "transactionIndex": "0x2", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x37161c", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "to": null, - "contractAddress": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6" + "contractAddress": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c" }, { "status": "0x1", - "cumulativeGasUsed": "0x34eb6f", + "cumulativeGasUsed": "0x4552a6", "logs": [ { "address": "0x5555555555555555555555555555555555555555", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x000000000000000000000000df8023679fe964982bdb93956f96b01c25f33da5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x991277aa74e582736c60a2111cef213a0962a481b5868a470806445f45fb8a19", - "transactionIndex": "0x1", - "logIndex": "0x4", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", + "transactionIndex": "0x3", + "logIndex": "0x28", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000002000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000008000000000000000000000000000000080000000000000000000000000000000000000000000000020000200000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000010000000080000000000000002000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000200000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000020000000000000000000000000080000000000000000000000000000000000000000000000020000000000000000000000000001000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000010000000080000000000000002000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x991277aa74e582736c60a2111cef213a0962a481b5868a470806445f45fb8a19", - "transactionIndex": "0x1", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "gasUsed": "0xd2b0", - "effectiveGasPrice": "0x734b60e", + "transactionHash": "0xa03c7a9bd28c9162611e1bbffc918b5395ac8da9aef8229e780912d0aee25c07", + "transactionIndex": "0x3", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0xd29a", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "to": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "contractAddress": null }, { "status": "0x1", - "cumulativeGasUsed": "0x3708e0", + "cumulativeGasUsed": "0x477033", "logs": [ { "address": "0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x25511f15fd46bc9ecc65b94e734e2e9f7c596c1f2dda6aae7d0a7dcd22b8ec6a", - "transactionIndex": "0x2", - "logIndex": "0x5", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x29", "removed": false }, { "address": "0xb88339cb7199b77e23db6e890353e22632ba630f", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x25511f15fd46bc9ecc65b94e734e2e9f7c596c1f2dda6aae7d0a7dcd22b8ec6a", - "transactionIndex": "0x2", - "logIndex": "0x6", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x2a", "removed": false }, { "address": "0x111111a1a0667d36bd57c0a9f569b98057111111", "topics": [ "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", - "0x0000000000000000000000001765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "0x0000000000000000000000003d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "0x00000000000000000000000022632c11c1b4ff37edb06ddc1d5bf9c4ca2132e5" ], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x25511f15fd46bc9ecc65b94e734e2e9f7c596c1f2dda6aae7d0a7dcd22b8ec6a", - "transactionIndex": "0x2", - "logIndex": "0x7", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "logIndex": "0x2b", "removed": false } ], - "logsBloom": "0x00000080400000000000400000000000000000000000000000000000000000000000000000000000000004000000000000000000080000000000000000200000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000400000000000020000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081000000200000000000200010000000000000000000000000000000000000000000081000000000000000", + "logsBloom": "0x00000080400000000000400000000000000000000000000000000000000000000000000000000000000004000000000000000000080000800000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000020000000000000000000000000000000000000000000000000000000000000400000000000020000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000001000000200000000000200010000000000000000000000000000000000000000000081000000000000000", "type": "0x2", - "transactionHash": "0x25511f15fd46bc9ecc65b94e734e2e9f7c596c1f2dda6aae7d0a7dcd22b8ec6a", - "transactionIndex": "0x2", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "gasUsed": "0x21d71", - "effectiveGasPrice": "0x734b60e", + "transactionHash": "0xb68ce9820bfc3cd6a1325bbd6c6bee84b841027f064547528fb2b20b031bf41c", + "transactionIndex": "0x4", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0x21d8d", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", - "to": "0x1765d303ba825ad22a3dcbcdc8cc540575e0b9f6", + "to": "0x3d36541d8c432b3c53e3d9f3d1940f2e3ccaa60c", "contractAddress": null }, { "status": "0x1", - "cumulativeGasUsed": "0x75f53d", + "cumulativeGasUsed": "0x865c90", "logs": [ { - "address": "0x0c1f272b1f56f428855c41d3c903e13638438770", + "address": "0x859af9ffedb32f204b5662e774aff1e38c6070c3", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xa03b6c9951d090cf16db4d6cc36e06ab7bf505476a5c7d089832f50aeb62fc34", - "transactionIndex": "0x3", - "logIndex": "0x8", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", + "transactionIndex": "0x5", + "logIndex": "0x2c", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000001000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000020000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xa03b6c9951d090cf16db4d6cc36e06ab7bf505476a5c7d089832f50aeb62fc34", - "transactionIndex": "0x3", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", + "transactionHash": "0x603ea376a168c3e52aba29330233090187afc1ff9039493f64c21cd30a199e7f", + "transactionIndex": "0x5", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", "gasUsed": "0x3eec5d", - "effectiveGasPrice": "0x734b60e", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "to": null, - "contractAddress": "0x0c1f272b1f56f428855c41d3c903e13638438770" + "contractAddress": "0x859af9ffedb32f204b5662e774aff1e38c6070c3" }, { "status": "0x1", - "cumulativeGasUsed": "0x7ddb54", + "cumulativeGasUsed": "0x8e42a7", "logs": [ { - "address": "0x3f93fabbf59b808cc47487dd211dd782020c98dc", + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000000c1f272b1f56f428855c41d3c903e13638438770" + "0x000000000000000000000000859af9ffedb32f204b5662e774aff1e38c6070c3" ], "data": "0x", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x3b9db990acdb3e3d25def7b789f630ae7bb1d63b633af03f139d5fc0649aa96a", - "transactionIndex": "0x4", - "logIndex": "0x9", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2d", "removed": false }, { - "address": "0x3f93fabbf59b808cc47487dd211dd782020c98dc", + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", "topics": [ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -378,93 +455,143 @@ "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" ], "data": "0x", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x3b9db990acdb3e3d25def7b789f630ae7bb1d63b633af03f139d5fc0649aa96a", - "transactionIndex": "0x4", - "logIndex": "0xa", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2e", "removed": false }, { - "address": "0x3f93fabbf59b808cc47487dd211dd782020c98dc", + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0x3b9db990acdb3e3d25def7b789f630ae7bb1d63b633af03f139d5fc0649aa96a", - "transactionIndex": "0x4", - "logIndex": "0xb", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "logIndex": "0x2f", "removed": false } ], - "logsBloom": "0x00400004000000000000008000000000400000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000802000008000000000000000000000000000000000000020000000000000000000801000008000000000000000000000000000000000000100000000800000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000001000000000000000000020000000000000000000000000000000000004000100000000000020000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000004000000004000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000002000000000000000000000000000000000000080000020000000000000000000800000008000000000000000000000000000000002000100000000800000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000001000000000000000000020000000000000000000000000000000000004000100000002000020000000000000000000000800000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x3b9db990acdb3e3d25def7b789f630ae7bb1d63b633af03f139d5fc0649aa96a", - "transactionIndex": "0x4", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", + "transactionHash": "0xed726dc496ce870642c7bd4173334f32357b2b20cf011745e3bdeba2059721bc", + "transactionIndex": "0x6", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", "gasUsed": "0x7e617", - "effectiveGasPrice": "0x734b60e", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "to": null, - "contractAddress": "0x3f93fabbf59b808cc47487dd211dd782020c98dc" + "contractAddress": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb" }, { "status": "0x1", - "cumulativeGasUsed": "0xc1e274", + "cumulativeGasUsed": "0x8f1e9a", "logs": [ { - "address": "0x85658b88fd1568c1b49f3f1f9f537837e2ea70ec", + "address": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "blockTimestamp": "0x693bb8fc", + "transactionHash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionIndex": "0x7", + "logIndex": "0x30", + "removed": false + } + ], + "logsBloom": "0x00000004000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000008000000000000000000000000000200000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000080000000000000000000000000000000000000000000000000100000000000000000000000000000000000800000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x18ddce19269f2398ff9b81e860d7e384684dd0336b59a043fdea4c9588e176a5", + "transactionIndex": "0x7", + "blockHash": "0x7a7d7346e7024d196e56abfa50cca2a0c9b8d5e34d3d2e30f48d932135a2a194", + "blockNumber": "0x149ef01", + "gasUsed": "0xdbf3", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x270e13", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd5b1dd57aaefffe77f455c934afaabbf42e3aa25c08a7476f93f88ddbcf7eb22", + "transactionIndex": "0x2", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0x7bc6", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0x8ecf2c64f77a09042dab6a2db45e63a4b0ead3bb", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x6b2f72", + "logs": [ + { + "address": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "blockTimestamp": "0x6913ce00", - "transactionHash": "0xb73c05e6fbd05a24b79180c084fd823b6a4fbd360225a1726738736c52d324fc", - "transactionIndex": "0x5", - "logIndex": "0xc", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", + "transactionIndex": "0x3", + "logIndex": "0x83", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000800000000000000000080000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800800000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xb73c05e6fbd05a24b79180c084fd823b6a4fbd360225a1726738736c52d324fc", - "transactionIndex": "0x5", - "blockHash": "0x537fdd889a44afda196f083ab1143e1f75686ed093519adcc2760d4ec6af4cd3", - "blockNumber": "0x1215b0b", - "gasUsed": "0x440720", - "effectiveGasPrice": "0x734b60e", + "transactionHash": "0x1d7f46c2b790763aafcb06c960e2e2da276896bdd498d5f3b05df280ffbc0b90", + "transactionIndex": "0x3", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0x44215f", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "to": null, - "contractAddress": "0x85658b88fd1568c1b49f3f1f9f537837e2ea70ec" + "contractAddress": "0xa0ad2a279929f40fb6dfe5e0914e64df2aaf2bec" }, { "status": "0x1", - "cumulativeGasUsed": "0xa41cb", + "cumulativeGasUsed": "0x7251d0", "logs": [ { - "address": "0x3d177625f3ac203c5aedfe5fad12c8f66b198436", + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000085658b88fd1568c1b49f3f1f9f537837e2ea70ec" + "0x000000000000000000000000a0ad2a279929f40fb6dfe5e0914e64df2aaf2bec" ], "data": "0x", - "blockHash": "0x4db87af92656a21764b87855f5b1731de796477c8dd0d7da1a9a2792cd9d924f", - "blockNumber": "0x1215b48", - "blockTimestamp": "0x6913ce3c", - "transactionHash": "0x190db3b1881de2140d97414b4311b2cdbb9dff401a86bc2d3d9f92589a66e7db", - "transactionIndex": "0x3", - "logIndex": "0x4", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x84", "removed": false }, { - "address": "0x3d177625f3ac203c5aedfe5fad12c8f66b198436", + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", "topics": [ "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -472,46 +599,114 @@ "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" ], "data": "0x", - "blockHash": "0x4db87af92656a21764b87855f5b1731de796477c8dd0d7da1a9a2792cd9d924f", - "blockNumber": "0x1215b48", - "blockTimestamp": "0x6913ce3c", - "transactionHash": "0x190db3b1881de2140d97414b4311b2cdbb9dff401a86bc2d3d9f92589a66e7db", - "transactionIndex": "0x3", - "logIndex": "0x5", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x85", "removed": false }, { - "address": "0x3d177625f3ac203c5aedfe5fad12c8f66b198436", + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0x4db87af92656a21764b87855f5b1731de796477c8dd0d7da1a9a2792cd9d924f", - "blockNumber": "0x1215b48", - "blockTimestamp": "0x6913ce3c", - "transactionHash": "0x190db3b1881de2140d97414b4311b2cdbb9dff401a86bc2d3d9f92589a66e7db", - "transactionIndex": "0x3", - "logIndex": "0x6", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "logIndex": "0x86", "removed": false } ], - "logsBloom": "0x00000004000000000000000000000000400000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000020000000000000000000800000008000000000100000000000000000000000000100000000800000000000000000000000082000000000000000000000000000000040000000000002000000000000040000000001000000000400000000020000000000000000000000000000000000004000100000000000020000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000004000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000082000000000001000000000000000000000000000000820000000000000000000800000008000000000000000000000000000000000000100000000800000000000000000000000082000000000000000000000000000000000000000000000000000000000000000000001000000000000000000020000000000000000000000000000000000004000100000000000020000000000000000000000000000000000000000000000000120000000000000000", "type": "0x2", - "transactionHash": "0x190db3b1881de2140d97414b4311b2cdbb9dff401a86bc2d3d9f92589a66e7db", - "transactionIndex": "0x3", - "blockHash": "0x4db87af92656a21764b87855f5b1731de796477c8dd0d7da1a9a2792cd9d924f", - "blockNumber": "0x1215b48", + "transactionHash": "0xb3b8684043455201befc46f72a3af1ef53f71bd2f78eb0caf60be6bede8a2de0", + "transactionIndex": "0x4", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", "gasUsed": "0x7225e", - "effectiveGasPrice": "0x734b60e", + "effectiveGasPrice": "0x6ef5855", "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", "to": null, - "contractAddress": "0x3d177625f3ac203c5aedfe5fad12c8f66b198436" + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x732dee", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xfc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionIndex": "0x5", + "logIndex": "0x87", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000100000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000008000000000000000000000000000200000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000080000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0xace7b086ae2e3c7e55f1c40a1e506e4028bef2e08501bb5c39030b3703c70938", + "transactionIndex": "0x5", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0xdc1e", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x740a0c", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0xdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b", + "0x000000000000000000000000d7e86bd77784217324b4e94aedc68e5c8227ec2b" + ], + "data": "0x", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "blockTimestamp": "0x693bb938", + "transactionHash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionIndex": "0x6", + "logIndex": "0x88", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000008000000000000080000000000000000000000100000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000002000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000100000000000000000", + "type": "0x2", + "transactionHash": "0x1c55eb69d430cfb791d464adaf2be5718ab6804915881353f0054723ed60e6be", + "transactionIndex": "0x6", + "blockHash": "0xaf3e854cba7c52cc44e319793c4560cde83c06f29900c941e3a3d53d48c2047a", + "blockNumber": "0x149ef3e", + "gasUsed": "0xdc1e", + "effectiveGasPrice": "0x6ef5855", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1762906434, + "timestamp": 1765522548, "chain": 999, - "commit": "14c801e" + "commit": "7bc6011" } \ No newline at end of file diff --git a/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830030.json b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830030.json new file mode 100644 index 0000000..4614581 --- /dev/null +++ b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830030.json @@ -0,0 +1,51 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "FulfillmentVault", + "contractAddress": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x592789", + "value": "0x0", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161503a6100f95f395f818161297f015281816129a80152612b31015261503a5ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b506103576103523660046140fa565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f9190614167565b348015610393575f5ffd5b506103576103a236600461419d565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d73660046141d4565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b506103576104553660046141ef565b610dce565b348015610465575f5ffd5b5061032561047436600461422d565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d5366004614244565b610e84565b3480156104e5575f5ffd5b506103bb6104f4366004614393565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c6366004614244565b61104c565b3480156105d6575f5ffd5b506103bb6105e536600461419d565b61109d565b3480156105f5575f5ffd5b506103bb610604366004614477565b611278565b348015610614575f5ffd5b506103bb61062336600461419d565b61147c565b6103bb610636366004614514565b6115c4565b348015610646575f5ffd5b506103256115df565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961160d565b60405161032f9190614574565b3480156106b1575f5ffd5b506103256106c03660046145bf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb610713366004614648565b61168f565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611794565b3480156107a0575f5ffd5b506103576107af366004614244565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611814565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b036600461419d565b611865565b3480156108c0575f5ffd5b506103bb6108cf3660046145bf565b611872565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb610985366004614746565b611942565b348015610995575f5ffd5b506103bb6109a43660046141d4565b6119c4565b3480156109b4575f5ffd5b506103bb6109c336600461419d565b611a35565b3480156109d3575f5ffd5b506103bb6109e2366004614244565b611ad3565b3480156109f2575f5ffd5b506103bb610a0136600461422d565b611b16565b348015610a11575f5ffd5b506103bb610a2036600461422d565b611c08565b348015610a30575f5ffd5b50610325610a3f366004614762565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa236600461479f565b611cee565b348015610ab2575f5ffd5b506103bb610ac136600461419d565b611e64565b348015610ad1575f5ffd5b506103bb611f4a565b5f610ae3611fbd565b905090565b5f610af282612070565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc1906147f8565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c24818585612247565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb89190614849565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d8281612254565b8115610d9457610d90612261565b5050565b610d906122d6565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb85828561232e565b610de68585856123dc565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae3919061486b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd81612254565b610ec7838361246b565b50505050565b5f610ed6612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c61255f565b610fdc5f8761246b565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611098828261263a565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c781612254565b6110cf6126de565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d89190614886565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a281612254565b6112aa6126de565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de6148a1565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f81518110611329576113296148a1565b60200260200101819052508360405161134291906148ce565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b192919061493d565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505f6113e63390565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461142d576040519150601f19603f3d011682016040523d82523d5f602084013e611432565b606091505b5050905080611474576040517ff03a5d5c0000000000000000000000000000000000000000000000000000000081524760048201526024015b60405180910390fd5b505050505050565b61148461273b565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16156114d8576114d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676033612797565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003611552576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b5f61155d825f612823565b905061156933826128ab565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b0384163330856128f8565b6115cc612974565b6115d582612a1b565b610d908282612a25565b5f6115e8612b26565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060030180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611667575b5050505050905090565b5f611698612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116c45750825b90505f8267ffffffffffffffff1660011480156116e05750303b155b9050811580156116ee575080155b15611725576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117865784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612b88565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060010180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611667575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b5f33610c248185856123dc565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b36118bc610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561191e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190614886565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61196c81612254565b6119746126de565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac4836040516119b091815260200190565b60405180910390a261109883836001612ba6565b5f6119ce81612254565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611a5f81612254565b611a676126de565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611aa291815260200190565b60405180910390a26001600160a01b038316611ac957611098611ac3612c63565b83612c81565b6110988383612da9565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b0c81612254565b610ec7838361263a565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611b4081612254565b611b486126de565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611bf6575f5ffd5b505af1158015611474573d5f5f3e3d5ffd5b611c1061273b565b5f611c1b825f612dbf565b9050611c273383612f6a565b5f611c3061160d565b905080604051611c4091906149b2565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611c839291906149e5565b60405180910390a35f5b8151811015610ec757611ce633848381518110611cac57611cac6148a1565b6020026020010151848481518110611cc657611cc66148a1565b60200260200101516001600160a01b0316612fb79092919063ffffffff16565b600101611c8d565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611d1881612254565b611d206126de565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611e02611ddd8763ffffffff16612fe8565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16613007565b6003810180546fffffffffffffffffffffffffffffffff16905f611e2583614a33565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611e8e81612254565b611e966126de565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611ed191815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611f85610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611fef7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561204c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190614849565b5f61207a82613107565b806120c657507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061211257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061215e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806121aa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b806121f657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b611098838383600161319d565b61225e8133612797565b50565b61226961273b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6122de6126de565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336122b8565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec757818110156123ce576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161146b565b610ec784848484035f61319d565b6001600160a01b03831661241e576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038216612460576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6110988383836132c5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661252e575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556124e43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b61256761342a565b6125718686613468565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f2919061486b565b815f81518110612604576126046148a1565b60200260200101906001600160a01b031690816001600160a01b031681525050612630858583846134cb565b61126f838361361d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561252e575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16612739576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615612739576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161146b565b5f610dec6128587f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61286390600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461288f9190614b60565b612897610ada565b6128a2906001614b60565b85919085613747565b6001600160a01b0382166128ed576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d905f83836132c5565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613792565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806129e457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129d8613817565b6001600160a01b031614155b15612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d9081612254565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a7f575060408051601f3d908101601f19168201909252612a7c91810190614849565b60015b612ac0576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b1c576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161146b565b611098838361383e565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b9061342a565b612b9a8686613468565b611474848484846134cb565b5f612bb084613893565b90505f8215612c1057612bc385856138f9565b90508067ffffffffffffffff165f03612c0b576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b612c58565b67ffffffffffffffff841115612c55576040517f857ccb8e0000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b50825b610d51828683613a05565b5f466103e614612c74576096612c78565b6104515b61ffff16905090565b5f612c8c83836138f9565b90508067ffffffffffffffff165f03612cd4576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810183905260240161146b565b5f612cde84613893565b9050612ce984613ae0565b15612d7d575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114612d37576040519150601f19603f3d011682016040523d82523d5f602084013e612d3c565b606091505b5050905080612d77576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f612d8d8563ffffffff16613b06565b60808101519091506114746001600160a01b0382168487612fb7565b5f612db383613c12565b90506110988183612c81565b60605f612dca61160d565b5167ffffffffffffffff811115612de357612de3614272565b604051908082528060200260200182016040528015612e0c578160200160208202803683370190505b5090505f5b612e1961160d565b51811015612f6257612f3d612e2c61160d565b8281518110612e3d57612e3d6148a1565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec89190614849565b612ed3906001614b60565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612f0890600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612f349190614b60565b87919087613747565b828281518110612f4f57612f4f6148a1565b6020908102919091010152600101612e11565b509392505050565b6001600160a01b038216612fac576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d90825f836132c5565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb9060640161292d565b5f610b3e612ff883612710614b73565b67ffffffffffffffff16613cb3565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f19818403018152908290526130a6939291602001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016130d19190614167565b5f604051808303815f87803b1580156130e8575f5ffd5b505af11580156130fa573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613200576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038416613242576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516132b691815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166133125781816002015f8282546133079190614b60565b9091555061339b9050565b6001600160a01b0384165f908152602082905260409020548281101561337d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018290526044810184905260640161146b565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166133b95760028101805483900390556133d7565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341c91815260200190565b60405180910390a350505050565b613432613d00565b612739576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61347061342a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036134bc8482614c4f565b5060048101610ec78382614c4f565b6134d361342a565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506135439060018301906020860190614074565b505f5b835181101561359c5761355a816001614b60565b826002015f868481518110613571576135716148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613546565b5081516135b29060038301906020850190614074565b505f5b825181101561360b576135c9816001614b60565b826004015f8584815181106135e0576135e06148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016135b5565b50600501805460ff1916905550505050565b61362561342a565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613708919061486b565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f61377461375483613d1e565b801561376f57505f848061376a5761376a614d0a565b868809115b151590565b61377f868686613d4a565b6137899190614b60565b95945050505050565b5f5f60205f8451602086015f885af1806137b1576040513d5f823e3d81fd5b50505f513d915081156137c85780600114156137d5565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b61384782613dfa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561388b576110988282613ea1565b610d90613f0a565b5f61389c612c63565b67ffffffffffffffff168267ffffffffffffffff16036138d15750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614d37565b5f5f61390a8463ffffffff16613b06565b60808101519091506001600160a01b031615613995575f8160e001515f0b131561395e575f8160e00151600a6139409190614b52565b61394a9085614d56565b905061395581613f42565b92505050610b3e565b5f8160e001515f0b1215613990575f8160e0015161397b90614d69565b61398690600a614b52565b61394a9085614da4565b6139c8565b61399e84613ae0565b156139c8576139c06139b1600a80614b52565b6139bb9085614d56565b613f42565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8516600482015260240161146b565b306001600160a01b03841603613a47576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e1391613ab5916001916006919060a001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016112469190614167565b5f613ae9612c63565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613b7d91614dbb565b5f60405180830381855afa9150503d805f8114613bb5576040519150601f19603f3d011682016040523d82523d5f602084013e613bba565b606091505b509150915081613bf6576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613c0a9190614e9d565b949350505050565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613c83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca79190614f9b565b63ffffffff1692915050565b5f63ffffffff821115613cfc576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152602060048201526024810183905260440161146b565b5090565b5f613d09612537565b5468010000000000000000900460ff16919050565b5f6002826003811115613d3357613d33614fb6565b613d3d9190614fe3565b60ff166001149050919050565b5f5f5f613d578686613f91565b91509150815f03613d7b57838181613d7157613d71614d0a565b0492505050610dec565b818411613d9257613d926003851502601118613fad565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613e48576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613ebd9190614dbb565b5f60405180830381855af49150503d805f8114613ef5576040519150601f19603f3d011682016040523d82523d5f602084013e613efa565b606091505b5091509150613789858383613fbe565b3415612739576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f67ffffffffffffffff821115613cfc57604080517f6dfcc65000000000000000000000000000000000000000000000000000000000815260048101919091526024810183905260440161146b565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613fd357613fce82614033565b610dec565b8151158015613fea57506001600160a01b0384163b155b1561402c576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5080610dec565b80511561404257805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f209081019282156140df579160200282015b828111156140df57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614092565b50613cfc9291505b80821115613cfc575f81556001016140e7565b5f6020828403121561410a575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec6020830184614139565b6001600160a01b038116811461225e575f5ffd5b803561419881614179565b919050565b5f5f604083850312156141ae575f5ffd5b82356141b981614179565b946020939093013593505050565b801515811461225e575f5ffd5b5f602082840312156141e4575f5ffd5b8135610dec816141c7565b5f5f5f60608486031215614201575f5ffd5b833561420c81614179565b9250602084013561421c81614179565b929592945050506040919091013590565b5f6020828403121561423d575f5ffd5b5035919050565b5f5f60408385031215614255575f5ffd5b82359150602083013561426781614179565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff811182821017156142c3576142c3614272565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156142f2576142f2614272565b604052919050565b5f67ffffffffffffffff82111561431357614313614272565b50601f01601f191660200190565b5f61433361432e846142fa565b6142c9565b9050828152838383011115614346575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261436b575f5ffd5b610dec83833560208501614321565b60ff8116811461225e575f5ffd5b80356141988161437a565b5f5f5f5f5f5f5f60e0888a0312156143a9575f5ffd5b873567ffffffffffffffff8111156143bf575f5ffd5b6143cb8a828b0161435c565b975050602088013567ffffffffffffffff8111156143e7575f5ffd5b6143f38a828b0161435c565b96505060408801356144048161437a565b945060608801356144148161437a565b9350608088013561442481614179565b925060a088013561443481614179565b915060c088013561444481614179565b8091505092959891949750929550565b5f67ffffffffffffffff82111561446d5761446d614272565b5060051b60200190565b5f5f60408385031215614488575f5ffd5b82359150602083013567ffffffffffffffff8111156144a5575f5ffd5b8301601f810185136144b5575f5ffd5b80356144c361432e82614454565b8082825260208201915060208360051b8501019250878311156144e4575f5ffd5b6020840193505b828410156145065783358252602093840193909101906144eb565b809450505050509250929050565b5f5f60408385031215614525575f5ffd5b823561453081614179565b9150602083013567ffffffffffffffff81111561454b575f5ffd5b8301601f8101851361455b575f5ffd5b61456a85823560208401614321565b9150509250929050565b602080825282518282018190525f918401906040840190835b818110156145b45783516001600160a01b031683526020938401939092019160010161458d565b509095945050505050565b5f602082840312156145cf575f5ffd5b8135610dec81614179565b5f82601f8301126145e9575f5ffd5b81356145f761432e82614454565b8082825260208201915060208360051b860101925085831115614618575f5ffd5b602085015b8381101561463e57803561463081614179565b83526020928301920161461d565b5095945050505050565b5f5f5f5f5f5f5f60e0888a03121561465e575f5ffd5b873567ffffffffffffffff811115614674575f5ffd5b6146808a828b0161435c565b975050602088013567ffffffffffffffff81111561469c575f5ffd5b6146a88a828b0161435c565b9650506146b760408901614388565b94506146c560608901614388565b9350608088013567ffffffffffffffff8111156146e0575f5ffd5b6146ec8a828b016145da565b93505060a088013567ffffffffffffffff811115614708575f5ffd5b6147148a828b016145da565b92505061472360c0890161418d565b905092959891949750929550565b67ffffffffffffffff8116811461225e575f5ffd5b5f5f60408385031215614757575f5ffd5b82356141b981614731565b5f5f60408385031215614773575f5ffd5b823561477e81614179565b9150602083013561426781614179565b63ffffffff8116811461225e575f5ffd5b5f5f5f5f608085870312156147b2575f5ffd5b84356147bd8161478e565b935060208501356147cd816141c7565b925060408501356147dd81614731565b915060608501356147ed81614731565b939692955090935050565b600181811c9082168061480c57607f821691505b602082108103614843577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215614859575f5ffd5b5051919050565b805161419881614179565b5f6020828403121561487b575f5ffd5b8151610dec81614179565b5f60208284031215614896575f5ffd5b8151610dec816141c7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b828110156148f85781518452602093840193909101906001016148da565b509195945050505050565b5f8151808452602084019350602083015f5b82811015614933578151865260209586019590910190600101614915565b5093949350505050565b604081525f61494f6040830185614903565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156149a457601f1986840301855261498e838351614903565b6020958601959093509190910190600101614972565b509098975050505050505050565b81515f90829060208501835b828110156148f85781516001600160a01b03168452602093840193909101906001016149be565b604081525f6149f76040830185614903565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff8103614a6657614a66614a06565b60010192915050565b6001815b6001841115614aaa57808504811115614a8e57614a8e614a06565b6001841615614a9c57908102905b60019390931c928002614a73565b935093915050565b5f82614ac057506001610b3e565b81614acc57505f610b3e565b8160018114614ae25760028114614aec57614b08565b6001915050610b3e565b60ff841115614afd57614afd614a06565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614b2b575081810a610b3e565b614b375f198484614a6f565b805f1904821115614b4a57614b4a614a06565b029392505050565b5f610dec60ff841683614ab2565b80820180821115610b3e57610b3e614a06565b67ffffffffffffffff8181168382160190811115610b3e57610b3e614a06565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f6137896004830184614b93565b601f82111561109857805f5260205f20601f840160051c81016020851015614c305750805b601f840160051c820191505b81811015610d51575f8155600101614c3c565b815167ffffffffffffffff811115614c6957614c69614272565b614c7d81614c7784546147f8565b84614c0b565b6020601f821160018114614caf575f8315614c985750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614cde5787850151825560209485019460019092019101614cbe565b5084821015614cfb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e614a06565b5f82614d6457614d64614d0a565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614d9c57614d9c614a06565b5f0392915050565b8082028115828204841417610b3e57610b3e614a06565b5f610dec8284614b93565b5f82601f830112614dd5575f5ffd5b8151614de361432e826142fa565b818152846020838601011115614df7575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b805161419881614731565b5f82601f830112614e2d575f5ffd5b8151614e3b61432e82614454565b8082825260208201915060208360051b860101925085831115614e5c575f5ffd5b602085015b8381101561463e578051614e7481614731565b835260209283019201614e61565b80516141988161437a565b80515f81900b8114614198575f5ffd5b5f60208284031215614ead575f5ffd5b815167ffffffffffffffff811115614ec3575f5ffd5b82016101008185031215614ed5575f5ffd5b614edd61429f565b815167ffffffffffffffff811115614ef3575f5ffd5b614eff86828501614dc6565b825250602082015167ffffffffffffffff811115614f1b575f5ffd5b614f2786828501614e1e565b602083015250614f3960408301614e13565b6040820152614f4a60608301614860565b6060820152614f5b60808301614860565b6080820152614f6c60a08301614e82565b60a0820152614f7d60c08301614e82565b60c0820152614f8e60e08301614e8d565b60e0820152949350505050565b5f60208284031215614fab575f5ffd5b8151610dec8161478e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614ff557614ff5614d0a565b8060ff8416069150509291505056fea26469706673582212204da0d926f9ff3f9c3a2af12a173dda7cb089ef3fd661738b4e22216cca1fc9e864736f6c634300081e0033", + "nonce": "0x126", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xd3F6C63420211c7f000A8239cce49C9E82AfDEE1", + "0x" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0xcbdc", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000d3f6c63420211c7f000a8239cce49c9e82afdee100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x127", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1765830030, + "chain": 999, + "commit": "4f4b660" +} \ No newline at end of file diff --git a/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830279.json b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830279.json new file mode 100644 index 0000000..32529e9 --- /dev/null +++ b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-1765830279.json @@ -0,0 +1,115 @@ +{ + "transactions": [ + { + "hash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionType": "CREATE", + "contractName": "FulfillmentVault", + "contractAddress": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x592789", + "value": "0x0", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161503a6100f95f395f818161297f015281816129a80152612b31015261503a5ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b506103576103523660046140fa565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f9190614167565b348015610393575f5ffd5b506103576103a236600461419d565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d73660046141d4565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b506103576104553660046141ef565b610dce565b348015610465575f5ffd5b5061032561047436600461422d565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d5366004614244565b610e84565b3480156104e5575f5ffd5b506103bb6104f4366004614393565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c6366004614244565b61104c565b3480156105d6575f5ffd5b506103bb6105e536600461419d565b61109d565b3480156105f5575f5ffd5b506103bb610604366004614477565b611278565b348015610614575f5ffd5b506103bb61062336600461419d565b61147c565b6103bb610636366004614514565b6115c4565b348015610646575f5ffd5b506103256115df565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961160d565b60405161032f9190614574565b3480156106b1575f5ffd5b506103256106c03660046145bf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb610713366004614648565b61168f565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611794565b3480156107a0575f5ffd5b506103576107af366004614244565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611814565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b036600461419d565b611865565b3480156108c0575f5ffd5b506103bb6108cf3660046145bf565b611872565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb610985366004614746565b611942565b348015610995575f5ffd5b506103bb6109a43660046141d4565b6119c4565b3480156109b4575f5ffd5b506103bb6109c336600461419d565b611a35565b3480156109d3575f5ffd5b506103bb6109e2366004614244565b611ad3565b3480156109f2575f5ffd5b506103bb610a0136600461422d565b611b16565b348015610a11575f5ffd5b506103bb610a2036600461422d565b611c08565b348015610a30575f5ffd5b50610325610a3f366004614762565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa236600461479f565b611cee565b348015610ab2575f5ffd5b506103bb610ac136600461419d565b611e64565b348015610ad1575f5ffd5b506103bb611f4a565b5f610ae3611fbd565b905090565b5f610af282612070565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc1906147f8565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c24818585612247565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb89190614849565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d8281612254565b8115610d9457610d90612261565b5050565b610d906122d6565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb85828561232e565b610de68585856123dc565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae3919061486b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd81612254565b610ec7838361246b565b50505050565b5f610ed6612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c61255f565b610fdc5f8761246b565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611098828261263a565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c781612254565b6110cf6126de565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d89190614886565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a281612254565b6112aa6126de565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de6148a1565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f81518110611329576113296148a1565b60200260200101819052508360405161134291906148ce565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b192919061493d565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505f6113e63390565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461142d576040519150601f19603f3d011682016040523d82523d5f602084013e611432565b606091505b5050905080611474576040517ff03a5d5c0000000000000000000000000000000000000000000000000000000081524760048201526024015b60405180910390fd5b505050505050565b61148461273b565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16156114d8576114d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676033612797565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003611552576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b5f61155d825f612823565b905061156933826128ab565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b0384163330856128f8565b6115cc612974565b6115d582612a1b565b610d908282612a25565b5f6115e8612b26565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060030180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611667575b5050505050905090565b5f611698612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116c45750825b90505f8267ffffffffffffffff1660011480156116e05750303b155b9050811580156116ee575080155b15611725576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117865784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612b88565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060010180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611667575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b5f33610c248185856123dc565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b36118bc610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561191e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190614886565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61196c81612254565b6119746126de565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac4836040516119b091815260200190565b60405180910390a261109883836001612ba6565b5f6119ce81612254565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611a5f81612254565b611a676126de565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611aa291815260200190565b60405180910390a26001600160a01b038316611ac957611098611ac3612c63565b83612c81565b6110988383612da9565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b0c81612254565b610ec7838361263a565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611b4081612254565b611b486126de565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611bf6575f5ffd5b505af1158015611474573d5f5f3e3d5ffd5b611c1061273b565b5f611c1b825f612dbf565b9050611c273383612f6a565b5f611c3061160d565b905080604051611c4091906149b2565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611c839291906149e5565b60405180910390a35f5b8151811015610ec757611ce633848381518110611cac57611cac6148a1565b6020026020010151848481518110611cc657611cc66148a1565b60200260200101516001600160a01b0316612fb79092919063ffffffff16565b600101611c8d565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611d1881612254565b611d206126de565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611e02611ddd8763ffffffff16612fe8565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16613007565b6003810180546fffffffffffffffffffffffffffffffff16905f611e2583614a33565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611e8e81612254565b611e966126de565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611ed191815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611f85610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611fef7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561204c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190614849565b5f61207a82613107565b806120c657507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061211257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061215e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806121aa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b806121f657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b611098838383600161319d565b61225e8133612797565b50565b61226961273b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6122de6126de565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336122b8565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec757818110156123ce576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161146b565b610ec784848484035f61319d565b6001600160a01b03831661241e576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038216612460576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6110988383836132c5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661252e575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556124e43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b61256761342a565b6125718686613468565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f2919061486b565b815f81518110612604576126046148a1565b60200260200101906001600160a01b031690816001600160a01b031681525050612630858583846134cb565b61126f838361361d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561252e575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16612739576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615612739576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161146b565b5f610dec6128587f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61286390600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461288f9190614b60565b612897610ada565b6128a2906001614b60565b85919085613747565b6001600160a01b0382166128ed576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d905f83836132c5565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613792565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806129e457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129d8613817565b6001600160a01b031614155b15612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d9081612254565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a7f575060408051601f3d908101601f19168201909252612a7c91810190614849565b60015b612ac0576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b1c576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161146b565b611098838361383e565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b9061342a565b612b9a8686613468565b611474848484846134cb565b5f612bb084613893565b90505f8215612c1057612bc385856138f9565b90508067ffffffffffffffff165f03612c0b576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b612c58565b67ffffffffffffffff841115612c55576040517f857ccb8e0000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b50825b610d51828683613a05565b5f466103e614612c74576096612c78565b6104515b61ffff16905090565b5f612c8c83836138f9565b90508067ffffffffffffffff165f03612cd4576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810183905260240161146b565b5f612cde84613893565b9050612ce984613ae0565b15612d7d575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114612d37576040519150601f19603f3d011682016040523d82523d5f602084013e612d3c565b606091505b5050905080612d77576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f612d8d8563ffffffff16613b06565b60808101519091506114746001600160a01b0382168487612fb7565b5f612db383613c12565b90506110988183612c81565b60605f612dca61160d565b5167ffffffffffffffff811115612de357612de3614272565b604051908082528060200260200182016040528015612e0c578160200160208202803683370190505b5090505f5b612e1961160d565b51811015612f6257612f3d612e2c61160d565b8281518110612e3d57612e3d6148a1565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec89190614849565b612ed3906001614b60565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612f0890600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612f349190614b60565b87919087613747565b828281518110612f4f57612f4f6148a1565b6020908102919091010152600101612e11565b509392505050565b6001600160a01b038216612fac576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d90825f836132c5565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb9060640161292d565b5f610b3e612ff883612710614b73565b67ffffffffffffffff16613cb3565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f19818403018152908290526130a6939291602001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016130d19190614167565b5f604051808303815f87803b1580156130e8575f5ffd5b505af11580156130fa573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613200576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038416613242576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516132b691815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166133125781816002015f8282546133079190614b60565b9091555061339b9050565b6001600160a01b0384165f908152602082905260409020548281101561337d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018290526044810184905260640161146b565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166133b95760028101805483900390556133d7565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341c91815260200190565b60405180910390a350505050565b613432613d00565b612739576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61347061342a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036134bc8482614c4f565b5060048101610ec78382614c4f565b6134d361342a565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506135439060018301906020860190614074565b505f5b835181101561359c5761355a816001614b60565b826002015f868481518110613571576135716148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613546565b5081516135b29060038301906020850190614074565b505f5b825181101561360b576135c9816001614b60565b826004015f8584815181106135e0576135e06148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016135b5565b50600501805460ff1916905550505050565b61362561342a565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613708919061486b565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f61377461375483613d1e565b801561376f57505f848061376a5761376a614d0a565b868809115b151590565b61377f868686613d4a565b6137899190614b60565b95945050505050565b5f5f60205f8451602086015f885af1806137b1576040513d5f823e3d81fd5b50505f513d915081156137c85780600114156137d5565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b61384782613dfa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561388b576110988282613ea1565b610d90613f0a565b5f61389c612c63565b67ffffffffffffffff168267ffffffffffffffff16036138d15750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614d37565b5f5f61390a8463ffffffff16613b06565b60808101519091506001600160a01b031615613995575f8160e001515f0b131561395e575f8160e00151600a6139409190614b52565b61394a9085614d56565b905061395581613f42565b92505050610b3e565b5f8160e001515f0b1215613990575f8160e0015161397b90614d69565b61398690600a614b52565b61394a9085614da4565b6139c8565b61399e84613ae0565b156139c8576139c06139b1600a80614b52565b6139bb9085614d56565b613f42565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8516600482015260240161146b565b306001600160a01b03841603613a47576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e1391613ab5916001916006919060a001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016112469190614167565b5f613ae9612c63565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613b7d91614dbb565b5f60405180830381855afa9150503d805f8114613bb5576040519150601f19603f3d011682016040523d82523d5f602084013e613bba565b606091505b509150915081613bf6576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613c0a9190614e9d565b949350505050565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613c83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca79190614f9b565b63ffffffff1692915050565b5f63ffffffff821115613cfc576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152602060048201526024810183905260440161146b565b5090565b5f613d09612537565b5468010000000000000000900460ff16919050565b5f6002826003811115613d3357613d33614fb6565b613d3d9190614fe3565b60ff166001149050919050565b5f5f5f613d578686613f91565b91509150815f03613d7b57838181613d7157613d71614d0a565b0492505050610dec565b818411613d9257613d926003851502601118613fad565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613e48576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613ebd9190614dbb565b5f60405180830381855af49150503d805f8114613ef5576040519150601f19603f3d011682016040523d82523d5f602084013e613efa565b606091505b5091509150613789858383613fbe565b3415612739576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f67ffffffffffffffff821115613cfc57604080517f6dfcc65000000000000000000000000000000000000000000000000000000000815260048101919091526024810183905260440161146b565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613fd357613fce82614033565b610dec565b8151158015613fea57506001600160a01b0384163b155b1561402c576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5080610dec565b80511561404257805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f209081019282156140df579160200282015b828111156140df57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614092565b50613cfc9291505b80821115613cfc575f81556001016140e7565b5f6020828403121561410a575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec6020830184614139565b6001600160a01b038116811461225e575f5ffd5b803561419881614179565b919050565b5f5f604083850312156141ae575f5ffd5b82356141b981614179565b946020939093013593505050565b801515811461225e575f5ffd5b5f602082840312156141e4575f5ffd5b8135610dec816141c7565b5f5f5f60608486031215614201575f5ffd5b833561420c81614179565b9250602084013561421c81614179565b929592945050506040919091013590565b5f6020828403121561423d575f5ffd5b5035919050565b5f5f60408385031215614255575f5ffd5b82359150602083013561426781614179565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff811182821017156142c3576142c3614272565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156142f2576142f2614272565b604052919050565b5f67ffffffffffffffff82111561431357614313614272565b50601f01601f191660200190565b5f61433361432e846142fa565b6142c9565b9050828152838383011115614346575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261436b575f5ffd5b610dec83833560208501614321565b60ff8116811461225e575f5ffd5b80356141988161437a565b5f5f5f5f5f5f5f60e0888a0312156143a9575f5ffd5b873567ffffffffffffffff8111156143bf575f5ffd5b6143cb8a828b0161435c565b975050602088013567ffffffffffffffff8111156143e7575f5ffd5b6143f38a828b0161435c565b96505060408801356144048161437a565b945060608801356144148161437a565b9350608088013561442481614179565b925060a088013561443481614179565b915060c088013561444481614179565b8091505092959891949750929550565b5f67ffffffffffffffff82111561446d5761446d614272565b5060051b60200190565b5f5f60408385031215614488575f5ffd5b82359150602083013567ffffffffffffffff8111156144a5575f5ffd5b8301601f810185136144b5575f5ffd5b80356144c361432e82614454565b8082825260208201915060208360051b8501019250878311156144e4575f5ffd5b6020840193505b828410156145065783358252602093840193909101906144eb565b809450505050509250929050565b5f5f60408385031215614525575f5ffd5b823561453081614179565b9150602083013567ffffffffffffffff81111561454b575f5ffd5b8301601f8101851361455b575f5ffd5b61456a85823560208401614321565b9150509250929050565b602080825282518282018190525f918401906040840190835b818110156145b45783516001600160a01b031683526020938401939092019160010161458d565b509095945050505050565b5f602082840312156145cf575f5ffd5b8135610dec81614179565b5f82601f8301126145e9575f5ffd5b81356145f761432e82614454565b8082825260208201915060208360051b860101925085831115614618575f5ffd5b602085015b8381101561463e57803561463081614179565b83526020928301920161461d565b5095945050505050565b5f5f5f5f5f5f5f60e0888a03121561465e575f5ffd5b873567ffffffffffffffff811115614674575f5ffd5b6146808a828b0161435c565b975050602088013567ffffffffffffffff81111561469c575f5ffd5b6146a88a828b0161435c565b9650506146b760408901614388565b94506146c560608901614388565b9350608088013567ffffffffffffffff8111156146e0575f5ffd5b6146ec8a828b016145da565b93505060a088013567ffffffffffffffff811115614708575f5ffd5b6147148a828b016145da565b92505061472360c0890161418d565b905092959891949750929550565b67ffffffffffffffff8116811461225e575f5ffd5b5f5f60408385031215614757575f5ffd5b82356141b981614731565b5f5f60408385031215614773575f5ffd5b823561477e81614179565b9150602083013561426781614179565b63ffffffff8116811461225e575f5ffd5b5f5f5f5f608085870312156147b2575f5ffd5b84356147bd8161478e565b935060208501356147cd816141c7565b925060408501356147dd81614731565b915060608501356147ed81614731565b939692955090935050565b600181811c9082168061480c57607f821691505b602082108103614843577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215614859575f5ffd5b5051919050565b805161419881614179565b5f6020828403121561487b575f5ffd5b8151610dec81614179565b5f60208284031215614896575f5ffd5b8151610dec816141c7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b828110156148f85781518452602093840193909101906001016148da565b509195945050505050565b5f8151808452602084019350602083015f5b82811015614933578151865260209586019590910190600101614915565b5093949350505050565b604081525f61494f6040830185614903565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156149a457601f1986840301855261498e838351614903565b6020958601959093509190910190600101614972565b509098975050505050505050565b81515f90829060208501835b828110156148f85781516001600160a01b03168452602093840193909101906001016149be565b604081525f6149f76040830185614903565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff8103614a6657614a66614a06565b60010192915050565b6001815b6001841115614aaa57808504811115614a8e57614a8e614a06565b6001841615614a9c57908102905b60019390931c928002614a73565b935093915050565b5f82614ac057506001610b3e565b81614acc57505f610b3e565b8160018114614ae25760028114614aec57614b08565b6001915050610b3e565b60ff841115614afd57614afd614a06565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614b2b575081810a610b3e565b614b375f198484614a6f565b805f1904821115614b4a57614b4a614a06565b029392505050565b5f610dec60ff841683614ab2565b80820180821115610b3e57610b3e614a06565b67ffffffffffffffff8181168382160190811115610b3e57610b3e614a06565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f6137896004830184614b93565b601f82111561109857805f5260205f20601f840160051c81016020851015614c305750805b601f840160051c820191505b81811015610d51575f8155600101614c3c565b815167ffffffffffffffff811115614c6957614c69614272565b614c7d81614c7784546147f8565b84614c0b565b6020601f821160018114614caf575f8315614c985750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614cde5787850151825560209485019460019092019101614cbe565b5084821015614cfb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e614a06565b5f82614d6457614d64614d0a565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614d9c57614d9c614a06565b5f0392915050565b8082028115828204841417610b3e57610b3e614a06565b5f610dec8284614b93565b5f82601f830112614dd5575f5ffd5b8151614de361432e826142fa565b818152846020838601011115614df7575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b805161419881614731565b5f82601f830112614e2d575f5ffd5b8151614e3b61432e82614454565b8082825260208201915060208360051b860101925085831115614e5c575f5ffd5b602085015b8381101561463e578051614e7481614731565b835260209283019201614e61565b80516141988161437a565b80515f81900b8114614198575f5ffd5b5f60208284031215614ead575f5ffd5b815167ffffffffffffffff811115614ec3575f5ffd5b82016101008185031215614ed5575f5ffd5b614edd61429f565b815167ffffffffffffffff811115614ef3575f5ffd5b614eff86828501614dc6565b825250602082015167ffffffffffffffff811115614f1b575f5ffd5b614f2786828501614e1e565b602083015250614f3960408301614e13565b6040820152614f4a60608301614860565b6060820152614f5b60808301614860565b6080820152614f6c60a08301614e82565b60a0820152614f7d60c08301614e82565b60c0820152614f8e60e08301614e8d565b60e0820152949350505050565b5f60208284031215614fab575f5ffd5b8151610dec8161478e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614ff557614ff5614d0a565b8060ff8416069150509291505056fea26469706673582212204da0d926f9ff3f9c3a2af12a173dda7cb089ef3fd661738b4e22216cca1fc9e864736f6c634300081e0033", + "nonce": "0x126", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xd3F6C63420211c7f000A8239cce49C9E82AfDEE1", + "0x" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0xcbdc", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000d3f6c63420211c7f000a8239cce49c9e82afdee100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x127", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x48f470", + "logs": [ + { + "address": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "blockTimestamp": "0x69406de8", + "transactionHash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionIndex": "0x3", + "logIndex": "0x8", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000040000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionIndex": "0x3", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "gasUsed": "0x449491", + "effectiveGasPrice": "0x1161fd4a", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x498808", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000d3f6c63420211c7f000a8239cce49c9e82afdee1" + ], + "data": "0x", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "blockTimestamp": "0x69406de8", + "transactionHash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000002000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000800", + "type": "0x2", + "transactionHash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionIndex": "0x4", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "gasUsed": "0x9398", + "effectiveGasPrice": "0x1161fd4a", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1765830279, + "chain": 999, + "commit": "4f4b660" +} \ No newline at end of file diff --git a/broadcast/UpgradeFulfillmentVault.s.sol/999/run-latest.json b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-latest.json new file mode 100644 index 0000000..32529e9 --- /dev/null +++ b/broadcast/UpgradeFulfillmentVault.s.sol/999/run-latest.json @@ -0,0 +1,115 @@ +{ + "transactions": [ + { + "hash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionType": "CREATE", + "contractName": "FulfillmentVault", + "contractAddress": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1", + "function": null, + "arguments": null, + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "gas": "0x592789", + "value": "0x0", + "input": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161503a6100f95f395f818161297f015281816129a80152612b31015261503a5ff3fe608060405260043610610306575f3560e01c806370a0823111610191578063ad3cb1cc116100dc578063d84e275f11610087578063e7bf231011610062578063e7bf231014610a88578063f42cfb1714610aa7578063f49a694e14610ac6575f5ffd5b8063d84e275f146109e7578063db006a7514610a06578063dd62ed3e14610a25575f5ffd5b8063cc3c70eb116100b7578063cc3c70eb1461098a578063cc574317146109a9578063d547741f146109c8575f5ffd5b8063ad3cb1cc146108d4578063affed0e01461091c578063b37ec4b81461096b575f5ffd5b806395d89b411161013c578063a217fddf11610117578063a217fddf14610883578063a9059cbb14610896578063ac06b9f2146108b5575f5ffd5b806395d89b41146107f857806396b298c51461080c57806396ebfb8914610847575f5ffd5b806389f91ece1161016c57806389f91ece1461074b5780638bf5fc691461078157806391d1485414610795575f5ffd5b806370a08231146106a657806374cf0963146106f95780637a997ab714610718575f5ffd5b80632f7ce38a116102515780634286668e116101fc57806352d1902d116101d757806352d1902d1461063b5780635c975abb1461064f5780636e8e052d14610685575f5ffd5b80634286668e146105ea57806347e7ef24146106095780634f1ef28614610628575f5ffd5b8063364bc15a1161022c578063364bc15a1461057957806336568abe146105ac57806342200c18146105cb575f5ffd5b80632f7ce38a146104da578063311176d7146104f9578063313ce56714610535575f5ffd5b806317fcb39b116102b1578063248a9ca31161028c578063248a9ca31461045a5780632dce0f51146104a75780632f2ff15d146104bb575f5ffd5b806317fcb39b146103dc57806318160ddd1461040857806323b872dd1461043b575f5ffd5b8063095ea7b3116102e1578063095ea7b3146103885780630d8ff5be146103a757806316c38b3c146103bd575f5ffd5b806301e1d1141461031157806301ffc9a71461033857806306fdde0314610367575f5ffd5b3661030d57005b5f5ffd5b34801561031c575f5ffd5b50610325610ada565b6040519081526020015b60405180910390f35b348015610343575f5ffd5b506103576103523660046140fa565b610ae8565b604051901515815260200161032f565b348015610372575f5ffd5b5061037b610b44565b60405161032f9190614167565b348015610393575f5ffd5b506103576103a236600461419d565b610c17565b3480156103b2575f5ffd5b506103bb610c2e565b005b3480156103c8575f5ffd5b506103bb6103d73660046141d4565b610d58565b3480156103e7575f5ffd5b506103f0610d9c565b6040516001600160a01b03909116815260200161032f565b348015610413575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610325565b348015610446575f5ffd5b506103576104553660046141ef565b610dce565b348015610465575f5ffd5b5061032561047436600461422d565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b3480156104b2575f5ffd5b506103f0610df3565b3480156104c6575f5ffd5b506103bb6104d5366004614244565b610e84565b3480156104e5575f5ffd5b506103bb6104f4366004614393565b610ecd565b348015610504575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b03166103f0565b348015610540575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff165b60405160ff909116815260200161032f565b348015610584575f5ffd5b506103257ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab81565b3480156105b7575f5ffd5b506103bb6105c6366004614244565b61104c565b3480156105d6575f5ffd5b506103bb6105e536600461419d565b61109d565b3480156105f5575f5ffd5b506103bb610604366004614477565b611278565b348015610614575f5ffd5b506103bb61062336600461419d565b61147c565b6103bb610636366004614514565b6115c4565b348015610646575f5ffd5b506103256115df565b34801561065a575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610357565b348015610690575f5ffd5b5061069961160d565b60405161032f9190614574565b3480156106b1575f5ffd5b506103256106c03660046145bf565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610704575f5ffd5b506103bb610713366004614648565b61168f565b348015610723575f5ffd5b506103257fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676081565b348015610756575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16610357565b34801561078c575f5ffd5b50610699611794565b3480156107a0575f5ffd5b506103576107af366004614244565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610803575f5ffd5b5061037b611814565b348015610817575f5ffd5b507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16610567565b348015610852575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b03166103f0565b34801561088e575f5ffd5b506103255f81565b3480156108a1575f5ffd5b506103576108b036600461419d565b611865565b3480156108c0575f5ffd5b506103bb6108cf3660046145bf565b611872565b3480156108df575f5ffd5b5061037b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610927575f5ffd5b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168203546040516fffffffffffffffffffffffffffffffff909116815260200161032f565b348015610976575f5ffd5b506103bb610985366004614746565b611942565b348015610995575f5ffd5b506103bb6109a43660046141d4565b6119c4565b3480156109b4575f5ffd5b506103bb6109c336600461419d565b611a35565b3480156109d3575f5ffd5b506103bb6109e2366004614244565b611ad3565b3480156109f2575f5ffd5b506103bb610a0136600461422d565b611b16565b348015610a11575f5ffd5b506103bb610a2036600461422d565b611c08565b348015610a30575f5ffd5b50610325610a3f366004614762565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b348015610a93575f5ffd5b506103bb610aa236600461479f565b611cee565b348015610ab2575f5ffd5b506103bb610ac136600461419d565b611e64565b348015610ad1575f5ffd5b506103bb611f4a565b5f610ae3611fbd565b905090565b5f610af282612070565b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd377d61700000000000000000000000000000000000000000000000000000000145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc1906147f8565b8015610c0c5780601f10610be357610100808354040283529160200191610c0c565b820191905f5260205f20905b815481529060010190602001808311610bef57829003601f168201915b505050505091505090565b5f33610c24818585612247565b5060019392505050565b5f610c37610d9c565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015610c94573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb89190614849565b90507f1f8efa0be0bf0ba2662be88e9772bc93d3ba06e5e2aded5e9d24d6bf9c4ff55181604051610ceb91815260200190565b60405180910390a1610cfb610d9c565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610d2891815260200190565b5f604051808303815f87803b158015610d3f575f5ffd5b505af1158015610d51573d5f5f3e3d5ffd5b5050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab610d8281612254565b8115610d9457610d90612261565b5050565b610d906122d6565b5f7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682005b546001600160a01b0316919050565b5f33610ddb85828561232e565b610de68585856123dc565b60019150505b9392505050565b5f610e257f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168201546001600160a01b031690565b6001600160a01b0316632dce0f516040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae3919061486b565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610ebd81612254565b610ec7838361246b565b50505050565b5f610ed6612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f81158015610f025750825b90505f8267ffffffffffffffff166001148015610f1e5750303b155b905081158015610f2c575080155b15610f63576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610fc45784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c61255f565b610fdc5f8761246b565b50831561103e5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b6001600160a01b038116331461108e576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611098828261263a565b505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6110c781612254565b6110cf6126de565b826001600160a01b03167f20446902b596581bd3c7f8b9b35134b83fee4d892f07a805efc40fe487f682568360405161110a91815260200190565b60405180910390a2826001600160a01b031663095ea7b36111527f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303815f875af11580156111b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d89190614886565b507f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260248201859052909116906347e7ef24906044015b5f604051808303815f87803b15801561125d575f5ffd5b505af115801561126f573d5f5f3e3d5ffd5b50505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab6112a281612254565b6112aa6126de565b6040805160018082528183019092525f916020808301908036833701905050905083815f815181106112de576112de6148a1565b60209081029190910101526040805160018082528183019092525f91816020015b60608152602001906001900390816112ff57905050905083815f81518110611329576113296148a1565b60200260200101819052508360405161134291906148ce565b604051908190038120868252907f52b3ca5502bad4e9e9d4c45a6d2178a23695bfe33eb88d6a15a94e697648a5159060200160405180910390a2611384610df3565b6001600160a01b0316637773eaf783836040518363ffffffff1660e01b81526004016113b192919061493d565b5f604051808303815f87803b1580156113c8575f5ffd5b505af11580156113da573d5f5f3e3d5ffd5b505050505f6113e63390565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461142d576040519150601f19603f3d011682016040523d82523d5f602084013e611432565b606091505b5050905080611474576040517ff03a5d5c0000000000000000000000000000000000000000000000000000000081524760048201526024015b60405180910390fd5b505050505050565b61148461273b565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0055460ff16156114d8576114d87fdc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be676033612797565b6001600160a01b0382165f9081527f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00260205260408120549003611552576040517fbd8743b60000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b5f61155d825f612823565b905061156933826128ab565b60408051838152602081018390526001600160a01b0385169133917ff5681f9d0db1b911ac18ee83d515a1cf1051853a9eae418316a2fdf7dea427c5910160405180910390a36110986001600160a01b0384163330856128f8565b6115cc612974565b6115d582612a1b565b610d908282612a25565b5f6115e8612b26565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060030180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611667575b5050505050905090565b5f611698612537565b805490915060ff68010000000000000000820416159067ffffffffffffffff165f811580156116c45750825b90505f8267ffffffffffffffff1660011480156116e05750303b155b9050811580156116ee575080155b15611725576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156117865784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610fd28c8c8c8c8c8c612b88565b60607f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00060010180548060200260200160405190810160405280929190818152602001828054801561168557602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311611667575050505050905090565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0091610b95906147f8565b5f33610c248185856123dc565b6040516001600160a01b038216907ffc1bac2859a1e9cfa326a8a54300d41c79eb591eda61142c126f8ed1040e4b69905f90a2806001600160a01b031663095ea7b36118bc610df3565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b0390911660048201525f1960248201526044016020604051808303815f875af115801561191e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d909190614886565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab61196c81612254565b6119746126de565b8267ffffffffffffffff167f52857abe9ac858b0f0cbd4abcdccf99dedd52b52f8bd2057bbf001b29f428ac4836040516119b091815260200190565b60405180910390a261109883836001612ba6565b5f6119ce81612254565b60405182151581527efb4a4490170ecfaef3b58153f1f6952b923417364d3841c1f4d60e3f4877c79060200160405180910390a1507f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b005805460ff1916911515919091179055565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611a5f81612254565b611a676126de565b826001600160a01b03167f80e43035b770532ffd86f9203776fbe7b2c6e3d0aaf37b9d867a2cd256ffe4f583604051611aa291815260200190565b60405180910390a26001600160a01b038316611ac957611098611ac3612c63565b83612c81565b6110988383612da9565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611b0c81612254565b610ec7838361263a565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611b4081612254565b611b486126de565b6040518281527f27d3396bb3da4ebd92ab84250420236e9bc10ac7bd695bb8caf12b52db489bba9060200160405180910390a17f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906342966c68906024015f604051808303815f87803b158015611bf6575f5ffd5b505af1158015611474573d5f5f3e3d5ffd5b611c1061273b565b5f611c1b825f612dbf565b9050611c273383612f6a565b5f611c3061160d565b905080604051611c4091906149b2565b6040518091039020336001600160a01b03167ffbe2bdc61b86f75ba742efdb0fec43f4a152c14817618d2a817994765cdb04ca8486604051611c839291906149e5565b60405180910390a35f5b8151811015610ec757611ce633848381518110611cac57611cac6148a1565b6020026020010151848481518110611cc657611cc66148a1565b60200260200101516001600160a01b0316612fb79092919063ffffffff16565b600101611c8d565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611d1881612254565b611d206126de565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b1682035460408051861515815267ffffffffffffffff868116602083015285168183015290517f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168200926fffffffffffffffffffffffffffffffff169163ffffffff8916917f252fff99802ab894b4ddd84205e1ef3c1e0a900036b19b843fbce22fb28c77bf9181900360600190a3611e02611ddd8763ffffffff16612fe8565b6003838101548891889188915f916fffffffffffffffffffffffffffffffff16613007565b6003810180546fffffffffffffffffffffffffffffffff16905f611e2583614a33565b91906101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050505050565b7ffc8737ab85eb45125971625a9ebdb75cc78e01d5c1fa80c4c6e5203f47bc4fab611e8e81612254565b611e966126de565b826001600160a01b03167f2e9e5633a0c082a79ac8810457fbb35bc25bd94234f75817dd6e668cb098960b83604051611ed191815260200190565b60405180910390a27f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546040517ff3fef3a30000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529091169063f3fef3a390604401611246565b6040514781527f2b580d0ae938d80ef124d0124ddf01e1c3897605e807689b8f1135420e7bb49f9060200160405180910390a1611f85610d9c565b6001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b158015610d3f575f5ffd5b5f611fef7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b168202546001600160a01b031690565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa15801561204c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae39190614849565b5f61207a82613107565b806120c657507fffffffff0000000000000000000000000000000000000000000000000000000082167ff11b6b3000000000000000000000000000000000000000000000000000000000145b8061211257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061215e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b806121aa57507fffffffff0000000000000000000000000000000000000000000000000000000082167f52d1902d00000000000000000000000000000000000000000000000000000000145b806121f657507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80610b3e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a025000000000000000000000000000000000000000000000000000000001492915050565b611098838383600161319d565b61225e8133612797565b50565b61226961273b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b6122de6126de565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336122b8565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f19811015610ec757818110156123ce576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640161146b565b610ec784848484035f61319d565b6001600160a01b03831661241e576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038216612460576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6110988383836132c5565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661252e575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556124e43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610b3e565b5f915050610b3e565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610b3e565b61256761342a565b6125718686613468565b6040805160018082528183019092525f9160208083019080368337019050509050816001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f2919061486b565b815f81518110612604576126046148a1565b60200260200101906001600160a01b031690816001600160a01b031681525050612630858583846134cb565b61126f838361361d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561252e575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610b3e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16612739576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615612739576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610d90576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161146b565b5f610dec6128587f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b0005460ff6101009091041690565b61286390600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025461288f9190614b60565b612897610ada565b6128a2906001614b60565b85919085613747565b6001600160a01b0382166128ed576040517fec442f050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d905f83836132c5565b6040516001600160a01b038481166024830152838116604483015260648201839052610ec79186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613792565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806129e457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129d8613817565b6001600160a01b031614155b15612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d9081612254565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a7f575060408051601f3d908101601f19168201909252612a7c91810190614849565b60015b612ac0576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612b1c576040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004810182905260240161146b565b611098838361383e565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612739576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612b9061342a565b612b9a8686613468565b611474848484846134cb565b5f612bb084613893565b90505f8215612c1057612bc385856138f9565b90508067ffffffffffffffff165f03612c0b576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b612c58565b67ffffffffffffffff841115612c55576040517f857ccb8e0000000000000000000000000000000000000000000000000000000081526004810185905260240161146b565b50825b610d51828683613a05565b5f466103e614612c74576096612c78565b6104515b61ffff16905090565b5f612c8c83836138f9565b90508067ffffffffffffffff165f03612cd4576040517f45641ba20000000000000000000000000000000000000000000000000000000081526004810183905260240161146b565b5f612cde84613893565b9050612ce984613ae0565b15612d7d575f816001600160a01b0316846040515f6040518083038185875af1925050503d805f8114612d37576040519150601f19603f3d011682016040523d82523d5f602084013e612d3c565b606091505b5050905080612d77576040517fe6acdf3200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50610ec7565b5f612d8d8563ffffffff16613b06565b60808101519091506114746001600160a01b0382168487612fb7565b5f612db383613c12565b90506110988183612c81565b60605f612dca61160d565b5167ffffffffffffffff811115612de357612de3614272565b604051908082528060200260200182016040528015612e0c578160200160208202803683370190505b5090505f5b612e1961160d565b51811015612f6257612f3d612e2c61160d565b8281518110612e3d57612e3d6148a1565b60209081029190910101516040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ec89190614849565b612ed3906001614b60565b7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b00054610100900460ff16612f0890600a614b52565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254612f349190614b60565b87919087613747565b828281518110612f4f57612f4f6148a1565b6020908102919091010152600101612e11565b509392505050565b6001600160a01b038216612fac576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b610d90825f836132c5565b6040516001600160a01b0383811660248301526044820183905261109891859182169063a9059cbb9060640161292d565b5f610b3e612ff883612710614b73565b67ffffffffffffffff16613cb3565b6040805163ffffffff891660208201528715159181019190915267ffffffffffffffff80871660608301528516608082015283151560a082015260ff831660c08201526fffffffffffffffffffffffffffffffff821660e0820152733333333333333333333333333333333333333333906317938e139060019081906101000160408051601f19818403018152908290526130a6939291602001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016130d19190614167565b5f604051808303815f87803b1580156130e8575f5ffd5b505af11580156130fa573d5f5f3e3d5ffd5b5050505050505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610b3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610b3e565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516613200576040517fe602df050000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038416613242576040517f94280d620000000000000000000000000000000000000000000000000000000081525f600482015260240161146b565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610d5157836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516132b691815260200190565b60405180910390a35050505050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0384166133125781816002015f8282546133079190614b60565b9091555061339b9050565b6001600160a01b0384165f908152602082905260409020548281101561337d576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018290526044810184905260640161146b565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b0383166133b95760028101805483900390556133d7565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341c91815260200190565b60405180910390a350505050565b613432613d00565b612739576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61347061342a565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036134bc8482614c4f565b5060048101610ec78382614c4f565b6134d361342a565b5f7f279d7268e134fe9470212f64c617da0df55170c0eafa03169b80558ce404b000805460ff868116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009092169088161717815583519091506135439060018301906020860190614074565b505f5b835181101561359c5761355a816001614b60565b826002015f868481518110613571576135716148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f2055600101613546565b5081516135b29060038301906020850190614074565b505f5b825181101561360b576135c9816001614b60565b826004015f8584815181106135e0576135e06148a1565b6020908102919091018101516001600160a01b031682528101919091526040015f20556001016135b5565b50600501805460ff1916905550505050565b61362561342a565b7f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820080546001600160a01b038481167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161783557f4b57f16710661390ada38fe64129442a589f51d339ba23973c82ad806b16820180549185169190921681179091556001600160a01b031663311176d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613708919061486b565b60029190910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039092169190911790555050565b5f61377461375483613d1e565b801561376f57505f848061376a5761376a614d0a565b868809115b151590565b61377f868686613d4a565b6137899190614b60565b95945050505050565b5f5f60205f8451602086015f885af1806137b1576040513d5f823e3d81fd5b50505f513d915081156137c85780600114156137d5565b6001600160a01b0384163b155b15610ec7576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610dbf565b61384782613dfa565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561388b576110988282613ea1565b610d90613f0a565b5f61389c612c63565b67ffffffffffffffff168267ffffffffffffffff16036138d15750732222222222222222222222222222222222222222919050565b610b3e67ffffffffffffffff8316732000000000000000000000000000000000000000614d37565b5f5f61390a8463ffffffff16613b06565b60808101519091506001600160a01b031615613995575f8160e001515f0b131561395e575f8160e00151600a6139409190614b52565b61394a9085614d56565b905061395581613f42565b92505050610b3e565b5f8160e001515f0b1215613990575f8160e0015161397b90614d69565b61398690600a614b52565b61394a9085614da4565b6139c8565b61399e84613ae0565b156139c8576139c06139b1600a80614b52565b6139bb9085614d56565b613f42565b915050610b3e565b6040517e23afb400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8516600482015260240161146b565b306001600160a01b03841603613a47576040517fcd64884100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001600160a01b038516602082015267ffffffffffffffff8481168284015283166060808301919091528251808303909101815260808201909252733333333333333333333333333333333333333333916317938e1391613ab5916001916006919060a001614baa565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016112469190614167565b5f613ae9612c63565b67ffffffffffffffff168267ffffffffffffffff16149050919050565b60408051610100810182526060808252602082018190525f92820183905281018290526080810182905260a0810182905260c0810182905260e08101919091526040805167ffffffffffffffff841660208201525f91829161080c910160408051601f1981840301815290829052613b7d91614dbb565b5f60405180830381855afa9150503d805f8114613bb5576040519150601f19603f3d011682016040523d82523d5f602084013e613bba565b606091505b509150915081613bf6576040517fee6b81c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80806020019051810190613c0a9190614e9d565b949350505050565b6040517f66c0bd240000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f90730b51d1a9098cf8a72c325003f44c194d41d7a85b906366c0bd2490602401602060405180830381865afa158015613c83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ca79190614f9b565b63ffffffff1692915050565b5f63ffffffff821115613cfc576040517f6dfcc650000000000000000000000000000000000000000000000000000000008152602060048201526024810183905260440161146b565b5090565b5f613d09612537565b5468010000000000000000900460ff16919050565b5f6002826003811115613d3357613d33614fb6565b613d3d9190614fe3565b60ff166001149050919050565b5f5f5f613d578686613f91565b91509150815f03613d7b57838181613d7157613d71614d0a565b0492505050610dec565b818411613d9257613d926003851502601118613fad565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010185841190960395909502919093039390930492909217029150509392505050565b806001600160a01b03163b5f03613e48576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260240161146b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051613ebd9190614dbb565b5f60405180830381855af49150503d805f8114613ef5576040519150601f19603f3d011682016040523d82523d5f602084013e613efa565b606091505b5091509150613789858383613fbe565b3415612739576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f67ffffffffffffffff821115613cfc57604080517f6dfcc65000000000000000000000000000000000000000000000000000000000815260048101919091526024810183905260440161146b565b5f805f1983850993909202808410938190039390930393915050565b634e487b715f52806020526024601cfd5b606082613fd357613fce82614033565b610dec565b8151158015613fea57506001600160a01b0384163b155b1561402c576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161146b565b5080610dec565b80511561404257805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255905f5260205f209081019282156140df579160200282015b828111156140df57825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614092565b50613cfc9291505b80821115613cfc575f81556001016140e7565b5f6020828403121561410a575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dec575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610dec6020830184614139565b6001600160a01b038116811461225e575f5ffd5b803561419881614179565b919050565b5f5f604083850312156141ae575f5ffd5b82356141b981614179565b946020939093013593505050565b801515811461225e575f5ffd5b5f602082840312156141e4575f5ffd5b8135610dec816141c7565b5f5f5f60608486031215614201575f5ffd5b833561420c81614179565b9250602084013561421c81614179565b929592945050506040919091013590565b5f6020828403121561423d575f5ffd5b5035919050565b5f5f60408385031215614255575f5ffd5b82359150602083013561426781614179565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610100810167ffffffffffffffff811182821017156142c3576142c3614272565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156142f2576142f2614272565b604052919050565b5f67ffffffffffffffff82111561431357614313614272565b50601f01601f191660200190565b5f61433361432e846142fa565b6142c9565b9050828152838383011115614346575f5ffd5b828260208301375f602084830101529392505050565b5f82601f83011261436b575f5ffd5b610dec83833560208501614321565b60ff8116811461225e575f5ffd5b80356141988161437a565b5f5f5f5f5f5f5f60e0888a0312156143a9575f5ffd5b873567ffffffffffffffff8111156143bf575f5ffd5b6143cb8a828b0161435c565b975050602088013567ffffffffffffffff8111156143e7575f5ffd5b6143f38a828b0161435c565b96505060408801356144048161437a565b945060608801356144148161437a565b9350608088013561442481614179565b925060a088013561443481614179565b915060c088013561444481614179565b8091505092959891949750929550565b5f67ffffffffffffffff82111561446d5761446d614272565b5060051b60200190565b5f5f60408385031215614488575f5ffd5b82359150602083013567ffffffffffffffff8111156144a5575f5ffd5b8301601f810185136144b5575f5ffd5b80356144c361432e82614454565b8082825260208201915060208360051b8501019250878311156144e4575f5ffd5b6020840193505b828410156145065783358252602093840193909101906144eb565b809450505050509250929050565b5f5f60408385031215614525575f5ffd5b823561453081614179565b9150602083013567ffffffffffffffff81111561454b575f5ffd5b8301601f8101851361455b575f5ffd5b61456a85823560208401614321565b9150509250929050565b602080825282518282018190525f918401906040840190835b818110156145b45783516001600160a01b031683526020938401939092019160010161458d565b509095945050505050565b5f602082840312156145cf575f5ffd5b8135610dec81614179565b5f82601f8301126145e9575f5ffd5b81356145f761432e82614454565b8082825260208201915060208360051b860101925085831115614618575f5ffd5b602085015b8381101561463e57803561463081614179565b83526020928301920161461d565b5095945050505050565b5f5f5f5f5f5f5f60e0888a03121561465e575f5ffd5b873567ffffffffffffffff811115614674575f5ffd5b6146808a828b0161435c565b975050602088013567ffffffffffffffff81111561469c575f5ffd5b6146a88a828b0161435c565b9650506146b760408901614388565b94506146c560608901614388565b9350608088013567ffffffffffffffff8111156146e0575f5ffd5b6146ec8a828b016145da565b93505060a088013567ffffffffffffffff811115614708575f5ffd5b6147148a828b016145da565b92505061472360c0890161418d565b905092959891949750929550565b67ffffffffffffffff8116811461225e575f5ffd5b5f5f60408385031215614757575f5ffd5b82356141b981614731565b5f5f60408385031215614773575f5ffd5b823561477e81614179565b9150602083013561426781614179565b63ffffffff8116811461225e575f5ffd5b5f5f5f5f608085870312156147b2575f5ffd5b84356147bd8161478e565b935060208501356147cd816141c7565b925060408501356147dd81614731565b915060608501356147ed81614731565b939692955090935050565b600181811c9082168061480c57607f821691505b602082108103614843577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f60208284031215614859575f5ffd5b5051919050565b805161419881614179565b5f6020828403121561487b575f5ffd5b8151610dec81614179565b5f60208284031215614896575f5ffd5b8151610dec816141c7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81515f90829060208501835b828110156148f85781518452602093840193909101906001016148da565b509195945050505050565b5f8151808452602084019350602083015f5b82811015614933578151865260209586019590910190600101614915565b5093949350505050565b604081525f61494f6040830185614903565b828103602084015280845180835260208301915060208160051b840101602087015f5b838110156149a457601f1986840301855261498e838351614903565b6020958601959093509190910190600101614972565b509098975050505050505050565b81515f90829060208501835b828110156148f85781516001600160a01b03168452602093840193909101906001016149be565b604081525f6149f76040830185614903565b90508260208301529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6fffffffffffffffffffffffffffffffff82166fffffffffffffffffffffffffffffffff8103614a6657614a66614a06565b60010192915050565b6001815b6001841115614aaa57808504811115614a8e57614a8e614a06565b6001841615614a9c57908102905b60019390931c928002614a73565b935093915050565b5f82614ac057506001610b3e565b81614acc57505f610b3e565b8160018114614ae25760028114614aec57614b08565b6001915050610b3e565b60ff841115614afd57614afd614a06565b50506001821b610b3e565b5060208310610133831016604e8410600b8410161715614b2b575081810a610b3e565b614b375f198484614a6f565b805f1904821115614b4a57614b4a614a06565b029392505050565b5f610dec60ff841683614ab2565b80820180821115610b3e57610b3e614a06565b67ffffffffffffffff8181168382160190811115610b3e57610b3e614a06565b5f81518060208401855e5f93019283525090919050565b7fff000000000000000000000000000000000000000000000000000000000000008460f81b1681527fffffff00000000000000000000000000000000000000000000000000000000008360e81b1660018201525f6137896004830184614b93565b601f82111561109857805f5260205f20601f840160051c81016020851015614c305750805b601f840160051c820191505b81811015610d51575f8155600101614c3c565b815167ffffffffffffffff811115614c6957614c69614272565b614c7d81614c7784546147f8565b84614c0b565b6020601f821160018114614caf575f8315614c985750848201515b5f19600385901b1c1916600184901b178455610d51565b5f84815260208120601f198516915b82811015614cde5787850151825560209485019460019092019101614cbe565b5084821015614cfb57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6001600160a01b038181168382160190811115610b3e57610b3e614a06565b5f82614d6457614d64614d0a565b500490565b5f815f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808103614d9c57614d9c614a06565b5f0392915050565b8082028115828204841417610b3e57610b3e614a06565b5f610dec8284614b93565b5f82601f830112614dd5575f5ffd5b8151614de361432e826142fa565b818152846020838601011115614df7575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b805161419881614731565b5f82601f830112614e2d575f5ffd5b8151614e3b61432e82614454565b8082825260208201915060208360051b860101925085831115614e5c575f5ffd5b602085015b8381101561463e578051614e7481614731565b835260209283019201614e61565b80516141988161437a565b80515f81900b8114614198575f5ffd5b5f60208284031215614ead575f5ffd5b815167ffffffffffffffff811115614ec3575f5ffd5b82016101008185031215614ed5575f5ffd5b614edd61429f565b815167ffffffffffffffff811115614ef3575f5ffd5b614eff86828501614dc6565b825250602082015167ffffffffffffffff811115614f1b575f5ffd5b614f2786828501614e1e565b602083015250614f3960408301614e13565b6040820152614f4a60608301614860565b6060820152614f5b60808301614860565b6080820152614f6c60a08301614e82565b60a0820152614f7d60c08301614e82565b60c0820152614f8e60e08301614e8d565b60e0820152949350505050565b5f60208284031215614fab575f5ffd5b8151610dec8161478e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f60ff831680614ff557614ff5614d0a565b8060ff8416069150509291505056fea26469706673582212204da0d926f9ff3f9c3a2af12a173dda7cb089ef3fd661738b4e22216cca1fc9e864736f6c634300081e0033", + "nonce": "0x126", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xd3F6C63420211c7f000A8239cce49C9E82AfDEE1", + "0x" + ], + "transaction": { + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "gas": "0xcbdc", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000d3f6c63420211c7f000a8239cce49c9e82afdee100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x127", + "chainId": "0x3e7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x48f470", + "logs": [ + { + "address": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "blockTimestamp": "0x69406de8", + "transactionHash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionIndex": "0x3", + "logIndex": "0x8", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000040000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6b9d0cd62f38f90585b4a14dabaa7564a99314f77a24aaf76e203d58e883da0a", + "transactionIndex": "0x3", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "gasUsed": "0x449491", + "effectiveGasPrice": "0x1161fd4a", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": null, + "contractAddress": "0xd3f6c63420211c7f000a8239cce49c9e82afdee1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x498808", + "logs": [ + { + "address": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000d3f6c63420211c7f000a8239cce49c9e82afdee1" + ], + "data": "0x", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "blockTimestamp": "0x69406de8", + "transactionHash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionIndex": "0x4", + "logIndex": "0x9", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000002000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000800", + "type": "0x2", + "transactionHash": "0x392a3e546d26e9e750e5e50c209d4dd23c8893cb1f63cce6bc9e89354030ee0d", + "transactionIndex": "0x4", + "blockHash": "0x74a499be49b20bb44e1aa68aa334d0ed300f09bf54171e15de03461b4ddf3d6e", + "blockNumber": "0x14eb802", + "gasUsed": "0x9398", + "effectiveGasPrice": "0x1161fd4a", + "from": "0xd7e86bd77784217324b4e94aedc68e5c8227ec2b", + "to": "0xb8de4ab6c65e274630f5279f74eb69b66327ce50", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1765830279, + "chain": 999, + "commit": "4f4b660" +} \ No newline at end of file diff --git a/lcov.info b/lcov.info index b1af8cc..e1dc9b6 100644 --- a/lcov.info +++ b/lcov.info @@ -1,409 +1,421 @@ TN: SF:script/BaseScript.s.sol -DA:12,0 -FN:12,BaseScript.setUp -FNDA:0,BaseScript.setUp -DA:13,0 -DA:15,0 +DA:17,259 +FN:17,BaseScript.setUp +FNDA:259,BaseScript.setUp +DA:18,0 DA:20,0 -FN:20,BaseScript.run +DA:25,0 +DA:26,259 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:33,0 +FN:33,BaseScript.run FNDA:0,BaseScript.run -DA:21,0 -DA:22,0 +DA:34,0 +DA:35,0 FNF:2 -FNH:0 -LF:6 -LH:0 +FNH:1 +LF:12 +LH:2 BRF:0 BRH:0 end_of_record TN: SF:script/DeployAll.s.sol -DA:8,0 -FN:8,DeployAllScript.setUp -FNDA:0,DeployAllScript.setUp DA:9,0 -DA:12,258 -FN:12,DeployAllScript.run +FN:9,DeployAllScript.setUp +FNDA:0,DeployAllScript.setUp +DA:10,0 +DA:13,258 +FN:13,DeployAllScript.run FNDA:258,DeployAllScript.run -DA:13,0 DA:14,0 DA:15,0 DA:16,0 DA:17,0 -DA:18,0 -DA:21,0 -FN:21,DeployAllScript.logAddresses -FNDA:0,DeployAllScript.logAddresses +DA:18,258 +DA:19,0 DA:22,0 +FN:22,DeployAllScript.logAddresses +FNDA:0,DeployAllScript.logAddresses DA:23,0 DA:24,0 DA:25,0 DA:26,0 -DA:28,0 -BRDA:28,0,0,- +DA:27,0 DA:29,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:39,0 +BRDA:29,0,0,- +DA:30,0 +DA:34,0 +DA:36,0 +DA:38,0 +DA:40,0 FNF:3 FNH:1 LF:21 -LH:1 +LH:2 BRF:1 BRH:0 end_of_record TN: SF:script/DeployFulfillmentVault.s.sol -DA:17,876 -FN:17,DeployFulfillmentVaultScript.setUp -FNDA:876,DeployFulfillmentVaultScript.setUp -DA:18,0 +DA:18,872 +FN:18,DeployFulfillmentVaultScript.setUp +FNDA:872,DeployFulfillmentVaultScript.setUp DA:19,0 DA:20,90 -DA:21,90 +DA:21,0 DA:22,0 DA:23,0 DA:24,0 -DA:25,358 +DA:25,354 DA:26,0 DA:27,0 -DA:28,876 -DA:31,3605 -FN:31,DeployFulfillmentVaultScript.run -FNDA:3605,DeployFulfillmentVaultScript.run +DA:28,0 +DA:29,872 DA:32,3605 +FN:32,DeployFulfillmentVaultScript.run +FNDA:3605,DeployFulfillmentVaultScript.run DA:33,0 -DA:35,0 -DA:38,893 -FN:38,DeployFulfillmentVaultScript.deployFulfillmentVault -FNDA:893,DeployFulfillmentVaultScript.deployFulfillmentVault -DA:40,0 -DA:43,546 -DA:55,0 -DA:56,2151 -DA:59,2151 -FN:59,DeployFulfillmentVaultScript.logFulfillmentVault -FNDA:2151,DeployFulfillmentVaultScript.logFulfillmentVault -DA:60,257 +DA:34,0 +DA:36,0 +DA:39,1924 +FN:39,DeployFulfillmentVaultScript.deployFulfillmentVault +FNDA:1924,DeployFulfillmentVaultScript.deployFulfillmentVault +DA:41,90 +DA:44,546 +DA:56,0 +DA:57,2151 +DA:60,2151 +DA:63,0 +DA:66,0 +FN:66,DeployFulfillmentVaultScript.logFulfillmentVault +FNDA:0,DeployFulfillmentVaultScript.logFulfillmentVault +DA:67,0 FNF:4 -FNH:4 -LF:23 -LH:12 +FNH:3 +LF:25 +LH:10 BRF:0 BRH:0 end_of_record TN: SF:script/DeployRolloverVault.s.sol -DA:17,1287 -FN:17,DeployRolloverVaultScript.setUp +DA:18,1287 +FN:18,DeployRolloverVaultScript.setUp FNDA:1287,DeployRolloverVaultScript.setUp -DA:18,0 -DA:19,1287 -DA:20,1287 -DA:21,772 -DA:22,0 -DA:23,772 +DA:19,0 +DA:21,1287 +DA:22,772 +DA:23,0 DA:24,772 DA:25,772 -DA:26,515 +DA:26,772 DA:27,515 -DA:28,0 -DA:31,0 -FN:31,DeployRolloverVaultScript.run -FNDA:0,DeployRolloverVaultScript.run -DA:32,0 +DA:28,515 +DA:29,0 +DA:30,0 DA:33,0 +FN:33,DeployRolloverVaultScript.run +FNDA:0,DeployRolloverVaultScript.run +DA:34,0 DA:35,0 -DA:38,0 -FN:38,DeployRolloverVaultScript.deployRolloverVault -FNDA:0,DeployRolloverVaultScript.deployRolloverVault +DA:37,0 DA:40,0 -DA:43,0 -DA:54,0 -DA:55,0 -DA:58,0 -FN:58,DeployRolloverVaultScript.logRolloverVault +FN:40,DeployRolloverVaultScript.deployRolloverVault +FNDA:0,DeployRolloverVaultScript.deployRolloverVault +DA:42,0 +DA:45,0 +DA:56,0 +DA:57,0 +DA:60,0 +DA:63,0 +DA:66,0 +FN:66,DeployRolloverVaultScript.logRolloverVault FNDA:0,DeployRolloverVaultScript.logRolloverVault -DA:59,0 +DA:67,0 FNF:4 FNH:1 -LF:23 -LH:9 +LF:25 +LH:8 BRF:0 BRH:0 end_of_record TN: SF:script/DeployRouter.s.sol -DA:13,0 -FN:13,DeployRouterScript.setUp +DA:11,0 +FN:11,DeployRouterScript.setUp FNDA:0,DeployRouterScript.setUp -DA:14,0 +DA:12,0 DA:15,0 +FN:15,DeployRouterScript.run +FNDA:0,DeployRouterScript.run DA:16,0 DA:17,0 -DA:18,0 DA:19,0 -DA:20,0 +DA:22,0 +FN:22,DeployRouterScript.deployRouter +FNDA:0,DeployRouterScript.deployRouter DA:23,0 -FN:23,DeployRouterScript.run -FNDA:0,DeployRouterScript.run DA:24,0 DA:25,0 -DA:27,0 -DA:30,0 -FN:30,DeployRouterScript.deployRouter -FNDA:0,DeployRouterScript.deployRouter -DA:31,0 -DA:32,0 -DA:33,0 -DA:36,0 -FN:36,DeployRouterScript.logRouter +DA:28,0 +FN:28,DeployRouterScript.logRouter FNDA:0,DeployRouterScript.logRouter -DA:37,0 +DA:29,0 FNF:4 FNH:0 -LF:18 +LF:12 LH:0 BRF:0 BRH:0 end_of_record TN: SF:src/FulfillmentVault.sol -DA:54,0 -FN:54,FulfillmentVault._getFulfillmentVaultStorage +DA:55,0 +FN:55,FulfillmentVault._getFulfillmentVaultStorage FNDA:0,FulfillmentVault._getFulfillmentVaultStorage -DA:57,0 -DA:71,0 -FN:71,FulfillmentVault.__FulfillmentVault_init +DA:58,0 +DA:72,0 +FN:72,FulfillmentVault.__FulfillmentVault_init FNDA:0,FulfillmentVault.__FulfillmentVault_init -DA:79,0 DA:80,0 DA:81,0 DA:82,0 DA:83,0 -DA:92,0 -FN:92,FulfillmentVault.__FulfillmentVault_init_unchained +DA:84,0 +DA:93,0 +FN:93,FulfillmentVault.__FulfillmentVault_init_unchained FNDA:0,FulfillmentVault.__FulfillmentVault_init_unchained -DA:96,0 DA:97,0 DA:98,0 DA:99,0 -DA:112,0 -FN:112,FulfillmentVault.initialize +DA:100,0 +DA:113,0 +FN:113,FulfillmentVault.initialize FNDA:0,FulfillmentVault.initialize -DA:121,0 DA:122,0 -DA:126,0 -FN:126,FulfillmentVault.supportsInterface -FNDA:0,FulfillmentVault.supportsInterface +DA:123,0 DA:127,0 -DA:132,0 -FN:132,FulfillmentVault._totalAssets -FNDA:0,FulfillmentVault._totalAssets +FN:127,FulfillmentVault.supportsInterface +FNDA:0,FulfillmentVault.supportsInterface +DA:128,0 DA:133,0 -DA:137,0 -FN:137,FulfillmentVault.wrappedNativeToken -FNDA:0,FulfillmentVault.wrappedNativeToken +FN:133,FulfillmentVault._totalAssets +FNDA:0,FulfillmentVault._totalAssets +DA:134,0 DA:138,0 -DA:142,0 -FN:142,FulfillmentVault.generalManager -FNDA:0,FulfillmentVault.generalManager +FN:138,FulfillmentVault.wrappedNativeToken +FNDA:0,FulfillmentVault.wrappedNativeToken +DA:139,0 DA:143,0 -DA:147,0 -FN:147,FulfillmentVault.orderPool -FNDA:0,FulfillmentVault.orderPool +FN:143,FulfillmentVault.generalManager +FNDA:0,FulfillmentVault.generalManager +DA:144,0 DA:148,0 -DA:152,0 -FN:152,FulfillmentVault.usdx -FNDA:0,FulfillmentVault.usdx +FN:148,FulfillmentVault.orderPool +FNDA:0,FulfillmentVault.orderPool +DA:149,0 DA:153,0 -DA:157,0 -FN:157,FulfillmentVault.nonce -FNDA:0,FulfillmentVault.nonce +FN:153,FulfillmentVault.usdx +FNDA:0,FulfillmentVault.usdx +DA:154,0 DA:158,0 -DA:163,0 -FN:163,FulfillmentVault.approveAssetToOrderPool -FNDA:0,FulfillmentVault.approveAssetToOrderPool +FN:158,FulfillmentVault.nonce +FNDA:0,FulfillmentVault.nonce +DA:159,0 DA:164,0 +FN:164,FulfillmentVault.approveAssetToOrderPool +FNDA:0,FulfillmentVault.approveAssetToOrderPool DA:165,0 -DA:170,0 -FN:170,FulfillmentVault.wrapHype -FNDA:0,FulfillmentVault.wrapHype +DA:166,0 DA:171,0 +FN:171,FulfillmentVault.wrapHype +FNDA:0,FulfillmentVault.wrapHype DA:172,0 -DA:177,0 -FN:177,FulfillmentVault.unwrapHype -FNDA:0,FulfillmentVault.unwrapHype +DA:173,0 DA:178,0 +FN:178,FulfillmentVault.unwrapHype +FNDA:0,FulfillmentVault.unwrapHype DA:179,0 DA:180,0 -DA:184,0 -FN:184,FulfillmentVault.bridgeAssetFromCoreToEvm +DA:181,0 +DA:185,0 +FN:185,FulfillmentVault.bridgeAssetFromCoreToEvm FNDA:0,FulfillmentVault.bridgeAssetFromCoreToEvm -DA:190,0 DA:191,0 -DA:195,0 -FN:195,FulfillmentVault.burnUsdx -FNDA:0,FulfillmentVault.burnUsdx +DA:192,0 DA:196,0 +FN:196,FulfillmentVault.burnUsdx +FNDA:0,FulfillmentVault.burnUsdx DA:197,0 -DA:201,0 -FN:201,FulfillmentVault.withdrawUsdTokenFromUsdx +DA:198,0 +DA:202,0 +FN:202,FulfillmentVault.withdrawUsdTokenFromUsdx FNDA:0,FulfillmentVault.withdrawUsdTokenFromUsdx -DA:207,0 DA:208,0 -DA:212,0 -FN:212,FulfillmentVault.depositUsdTokenToUsdx -FNDA:0,FulfillmentVault.depositUsdTokenToUsdx +DA:209,0 DA:213,0 +FN:213,FulfillmentVault.depositUsdTokenToUsdx +FNDA:0,FulfillmentVault.depositUsdTokenToUsdx DA:214,0 DA:215,0 -DA:219,0 -FN:219,FulfillmentVault.bridgeAssetFromEvmToCore -FNDA:0,FulfillmentVault.bridgeAssetFromEvmToCore +DA:216,0 DA:220,0 +FN:220,FulfillmentVault.bridgeAssetFromEvmToCore +FNDA:0,FulfillmentVault.bridgeAssetFromEvmToCore DA:221,0 -BRDA:221,0,0,- -BRDA:221,0,1,- DA:222,0 -DA:224,0 -DA:229,0 -FN:229,FulfillmentVault.tradeOnCore +BRDA:222,0,0,- +BRDA:222,0,1,- +DA:223,0 +DA:225,0 +DA:230,0 +FN:230,FulfillmentVault.tradeOnCore FNDA:0,FulfillmentVault.tradeOnCore -DA:236,0 -DA:238,0 -DA:240,0 +DA:237,0 +DA:239,0 DA:241,0 -DA:245,0 -FN:245,FulfillmentVault.fillOrder -FNDA:0,FulfillmentVault.fillOrder +DA:242,0 DA:246,0 +FN:246,FulfillmentVault.fillOrder +FNDA:0,FulfillmentVault.fillOrder DA:247,0 DA:248,0 DA:249,0 -DA:251,0 +DA:250,0 DA:252,0 -DA:54,773 -FN:54,FulfillmentVault._getFulfillmentVaultStorage +DA:253,0 +DA:255,0 +DA:256,0 +BRDA:256,1,0,- +DA:257,0 +DA:55,773 +FN:55,FulfillmentVault._getFulfillmentVaultStorage FNDA:773,FulfillmentVault._getFulfillmentVaultStorage -DA:57,773 -DA:71,30 -FN:71,FulfillmentVault.__FulfillmentVault_init +DA:58,773 +DA:72,30 +FN:72,FulfillmentVault.__FulfillmentVault_init FNDA:30,FulfillmentVault.__FulfillmentVault_init -DA:79,30 DA:80,30 DA:81,30 DA:82,30 DA:83,30 -DA:92,30 -FN:92,FulfillmentVault.__FulfillmentVault_init_unchained +DA:84,30 +DA:93,30 +FN:93,FulfillmentVault.__FulfillmentVault_init_unchained FNDA:30,FulfillmentVault.__FulfillmentVault_init_unchained -DA:96,0 -DA:97,30 +DA:97,0 DA:98,30 DA:99,30 -DA:112,30 -FN:112,FulfillmentVault.initialize +DA:100,30 +DA:113,30 +FN:113,FulfillmentVault.initialize FNDA:30,FulfillmentVault.initialize -DA:121,30 DA:122,30 -DA:126,264 -FN:126,FulfillmentVault.supportsInterface -FNDA:264,FulfillmentVault.supportsInterface +DA:123,30 DA:127,264 -DA:132,1060 -FN:132,FulfillmentVault._totalAssets -FNDA:1060,FulfillmentVault._totalAssets +FN:127,FulfillmentVault.supportsInterface +FNDA:264,FulfillmentVault.supportsInterface +DA:128,264 DA:133,1060 -DA:137,1 -FN:137,FulfillmentVault.wrappedNativeToken +FN:133,FulfillmentVault._totalAssets +FNDA:1060,FulfillmentVault._totalAssets +DA:134,1060 +DA:138,1 +FN:138,FulfillmentVault.wrappedNativeToken FNDA:1,FulfillmentVault.wrappedNativeToken -DA:138,773 -DA:142,1 -FN:142,FulfillmentVault.generalManager -FNDA:1,FulfillmentVault.generalManager +DA:139,773 DA:143,1 -DA:147,1 -FN:147,FulfillmentVault.orderPool +FN:143,FulfillmentVault.generalManager +FNDA:1,FulfillmentVault.generalManager +DA:144,1 +DA:148,1 +FN:148,FulfillmentVault.orderPool FNDA:1,FulfillmentVault.orderPool -DA:148,517 -DA:152,1 -FN:152,FulfillmentVault.usdx -FNDA:1,FulfillmentVault.usdx +DA:149,517 DA:153,1 -DA:157,1 -FN:157,FulfillmentVault.nonce -FNDA:1,FulfillmentVault.nonce +FN:153,FulfillmentVault.usdx +FNDA:1,FulfillmentVault.usdx +DA:154,1 DA:158,1 -DA:163,515 -FN:163,FulfillmentVault.approveAssetToOrderPool -FNDA:515,FulfillmentVault.approveAssetToOrderPool +FN:158,FulfillmentVault.nonce +FNDA:1,FulfillmentVault.nonce +DA:159,1 DA:164,515 +FN:164,FulfillmentVault.approveAssetToOrderPool +FNDA:515,FulfillmentVault.approveAssetToOrderPool DA:165,515 -DA:170,258 -FN:170,FulfillmentVault.wrapHype -FNDA:258,FulfillmentVault.wrapHype +DA:166,515 DA:171,258 +FN:171,FulfillmentVault.wrapHype +FNDA:258,FulfillmentVault.wrapHype DA:172,258 -DA:177,257 -FN:177,FulfillmentVault.unwrapHype -FNDA:257,FulfillmentVault.unwrapHype +DA:173,258 DA:178,257 +FN:178,FulfillmentVault.unwrapHype +FNDA:257,FulfillmentVault.unwrapHype DA:179,257 DA:180,257 -DA:184,1029 -FN:184,FulfillmentVault.bridgeAssetFromCoreToEvm +DA:181,257 +DA:185,1029 +FN:185,FulfillmentVault.bridgeAssetFromCoreToEvm FNDA:1029,FulfillmentVault.bridgeAssetFromCoreToEvm -DA:190,515 DA:191,515 -DA:195,1028 -FN:195,FulfillmentVault.burnUsdx +DA:192,515 +DA:196,1028 +FN:196,FulfillmentVault.burnUsdx FNDA:1028,FulfillmentVault.burnUsdx -DA:196,514 DA:197,514 -DA:201,772 -FN:201,FulfillmentVault.withdrawUsdTokenFromUsdx +DA:198,514 +DA:202,772 +FN:202,FulfillmentVault.withdrawUsdTokenFromUsdx FNDA:772,FulfillmentVault.withdrawUsdTokenFromUsdx -DA:207,258 DA:208,258 -DA:212,771 -FN:212,FulfillmentVault.depositUsdTokenToUsdx +DA:209,258 +DA:213,771 +FN:213,FulfillmentVault.depositUsdTokenToUsdx FNDA:771,FulfillmentVault.depositUsdTokenToUsdx -DA:213,257 DA:214,257 DA:215,257 -DA:219,772 -FN:219,FulfillmentVault.bridgeAssetFromEvmToCore +DA:216,257 +DA:220,772 +FN:220,FulfillmentVault.bridgeAssetFromEvmToCore FNDA:772,FulfillmentVault.bridgeAssetFromEvmToCore -DA:220,258 DA:221,258 -BRDA:221,0,0,- -BRDA:221,0,1,258 -DA:222,0 -DA:224,258 -DA:229,773 -FN:229,FulfillmentVault.tradeOnCore +DA:222,258 +BRDA:222,0,0,- +BRDA:222,0,1,258 +DA:223,0 +DA:225,258 +DA:230,773 +FN:230,FulfillmentVault.tradeOnCore FNDA:773,FulfillmentVault.tradeOnCore -DA:236,0 -DA:238,259 -DA:240,259 +DA:237,0 +DA:239,259 DA:241,259 -DA:245,515 -FN:245,FulfillmentVault.fillOrder +DA:242,259 +DA:246,515 +FN:246,FulfillmentVault.fillOrder FNDA:515,FulfillmentVault.fillOrder -DA:246,1 DA:247,1 DA:248,1 DA:249,1 -DA:251,1 +DA:250,1 DA:252,1 +DA:253,1 +DA:255,1 +DA:256,1 +BRDA:256,1,0,- +DA:257,0 FNF:42 FNH:21 -LF:140 -LH:67 -BRF:4 +LF:146 +LH:69 +BRF:6 BRH:1 end_of_record TN: @@ -914,392 +926,410 @@ BRH:4 end_of_record TN: SF:src/Router.sol -DA:68,774 -FN:68,Router.constructor +DA:72,774 +FN:72,Router.constructor FNDA:774,Router.constructor -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 DA:73,0 -DA:74,774 +DA:74,0 +DA:75,774 +DA:76,774 DA:77,774 DA:78,774 DA:79,774 -DA:80,774 -DA:88,774 -FN:88,Router.approveCollaterals -FNDA:774,Router.approveCollaterals -DA:89,0 -DA:91,0 -DA:92,0 -BRDA:92,0,0,- +DA:82,774 +DA:83,0 +DA:84,0 +DA:85,0 +DA:93,0 +FN:93,Router.approveCollaterals +FNDA:0,Router.approveCollaterals DA:94,0 -DA:95,0 -DA:103,0 -FN:103,Router.approveUsdTokens +DA:96,0 +DA:97,0 +BRDA:97,0,0,- +DA:99,0 +DA:100,0 +DA:108,0 +FN:108,Router.approveUsdTokens FNDA:0,Router.approveUsdTokens -DA:104,0 -DA:106,0 -DA:107,0 -DA:116,0 -FN:116,Router._pullUsdToken +DA:109,0 +DA:111,0 +DA:112,0 +DA:121,0 +FN:121,Router._pullUsdToken FNDA:0,Router._pullUsdToken -DA:117,0 -BRDA:117,1,0,- -BRDA:117,1,1,- -DA:120,0 -DA:124,0 -DA:127,0 -DA:130,0 -DA:139,0 -FN:139,Router._pullInConsol +DA:122,0 +BRDA:122,1,0,- +BRDA:122,1,1,- +DA:125,0 +DA:129,0 +DA:132,0 +DA:135,0 +DA:144,0 +FN:144,Router._pullInConsol FNDA:0,Router._pullInConsol -DA:140,0 -BRDA:140,2,0,- -BRDA:140,2,1,- -DA:143,0 -DA:147,0 -DA:149,0 -DA:151,0 -DA:161,0 -FN:161,Router._pullCollateral +DA:145,0 +BRDA:145,2,0,- +BRDA:145,2,1,- +DA:148,0 +DA:152,0 +DA:154,0 +DA:156,0 +DA:166,0 +FN:166,Router._pullCollateral FNDA:0,Router._pullCollateral -DA:162,0 -BRDA:162,3,0,- -BRDA:162,3,1,- -DA:164,0 DA:167,0 -DA:178,0 -FN:178,Router._calculateCost -FNDA:0,Router._calculateCost +BRDA:167,3,0,- +BRDA:167,3,1,- +DA:169,0 +DA:172,0 DA:183,0 -DA:184,0 -DA:187,0 -DA:190,0 -DA:196,0 -FN:196,Router.calculateCollectedAmounts -FNDA:0,Router.calculateCollectedAmounts +FN:183,Router._calculateCost +FNDA:0,Router._calculateCost +DA:188,0 +DA:189,0 +DA:192,0 +DA:195,0 DA:201,0 -BRDA:201,4,0,- -BRDA:201,4,1,- -DA:202,0 -DA:204,0 +FN:201,Router.calculateCollectedAmounts +FNDA:0,Router.calculateCollectedAmounts +DA:206,0 +BRDA:206,4,0,- +BRDA:206,4,1,- DA:207,0 -DA:208,0 DA:209,0 -DA:210,0 +DA:211,0 +DA:212,0 +DA:213,0 DA:214,0 -DA:216,0 -DA:217,0 DA:218,0 -DA:219,0 DA:220,0 DA:221,0 -BRDA:221,5,0,- DA:222,0 -DA:231,0 -FN:231,Router.updatePriceFeedsAndRequestMortgage +DA:223,0 +DA:224,0 +DA:225,0 +BRDA:225,5,0,- +DA:226,0 +DA:235,0 +FN:235,Router.updatePriceFeedsAndRequestMortgage FNDA:0,Router.updatePriceFeedsAndRequestMortgage -DA:243,0 -DA:246,0 -DA:248,0 -DA:254,0 -FN:254,Router.requestMortgage +DA:247,0 +DA:250,0 +DA:252,0 +DA:258,0 +FN:258,Router.requestMortgage FNDA:0,Router.requestMortgage -DA:264,0 -DA:266,0 -BRDA:266,6,0,- -DA:267,0 -BRDA:267,7,0,- DA:268,0 DA:270,0 -DA:273,0 -BRDA:273,8,0,- +BRDA:270,6,0,- +DA:271,0 +BRDA:271,7,0,- +DA:272,0 DA:274,0 -BRDA:274,9,0,- -DA:275,0 DA:277,0 -DA:280,0 +BRDA:277,8,0,- +DA:278,0 +BRDA:278,9,0,- +DA:279,0 DA:281,0 DA:284,0 -DA:290,0 -FN:290,Router.periodPay +DA:285,0 +DA:288,0 +DA:294,0 +FN:294,Router.periodPay FNDA:0,Router.periodPay -DA:292,0 -DA:295,0 -DA:298,0 +DA:296,0 DA:299,0 -DA:300,0 -DA:306,0 -FN:306,Router.penaltyPay +DA:302,0 +DA:303,0 +DA:304,0 +DA:310,0 +FN:310,Router.penaltyPay FNDA:0,Router.penaltyPay -DA:308,0 -DA:311,0 -DA:314,0 +DA:312,0 DA:315,0 -DA:316,0 -DA:322,0 -FN:322,Router.refinance +DA:318,0 +DA:319,0 +DA:320,0 +DA:326,0 +FN:326,Router.refinance FNDA:0,Router.refinance -DA:324,0 -DA:327,0 -DA:330,0 -DA:333,0 -DA:336,0 -DA:339,0 -DA:342,0 +DA:328,0 +DA:331,0 +DA:334,0 +DA:337,0 +DA:340,0 DA:343,0 DA:346,0 -DA:354,0 -FN:354,Router._getOrCreateOriginationPool +DA:347,0 +DA:350,0 +DA:358,0 +FN:358,Router._getOrCreateOriginationPool FNDA:0,Router._getOrCreateOriginationPool -DA:355,0 -DA:357,0 -BRDA:357,10,0,- +DA:362,0 DA:365,0 -FN:365,Router.originationPoolDeposit -FNDA:0,Router.originationPoolDeposit -DA:367,0 -DA:370,0 +BRDA:365,10,0,- DA:373,0 -DA:376,0 -DA:377,0 -DA:380,0 -DA:386,0 -FN:386,Router.convert +FN:373,Router.originationPoolDeposit +FNDA:0,Router.originationPoolDeposit +DA:375,0 +DA:378,0 +DA:381,0 +DA:384,0 +DA:385,0 +DA:388,0 +DA:394,0 +FN:394,Router.convert FNDA:0,Router.convert -DA:392,0 -BRDA:392,11,0,- -BRDA:392,11,1,- -DA:393,0 -DA:396,0 -BRDA:396,12,0,- -BRDA:396,12,1,- -DA:398,0 +DA:400,0 +BRDA:400,11,0,- +BRDA:400,11,1,- DA:401,0 -BRDA:401,13,0,- -BRDA:401,13,1,- -DA:402,0 -DA:405,0 -BRDA:405,14,0,- -BRDA:405,14,1,- +DA:404,0 +BRDA:404,12,0,- +BRDA:404,12,1,- DA:406,0 +DA:409,0 +BRDA:409,13,0,- +BRDA:409,13,1,- DA:410,0 -DA:417,0 -FN:417,Router.wrap -FNDA:0,Router.wrap -DA:419,0 -BRDA:419,15,0,- -BRDA:419,15,1,- -DA:420,0 -DA:421,0 -BRDA:421,16,0,- -DA:422,0 +DA:413,0 +BRDA:413,14,0,- +BRDA:413,14,1,- +DA:414,0 +DA:418,0 DA:425,0 +FN:425,Router.wrap +FNDA:0,Router.wrap +DA:427,0 +BRDA:427,15,0,- +BRDA:427,15,1,- DA:428,0 -BRDA:428,17,0,- DA:429,0 +BRDA:429,16,0,- +DA:430,0 DA:433,0 -BRDA:433,18,0,- -DA:435,0 +DA:436,0 +BRDA:436,17,0,- DA:437,0 DA:441,0 -DA:68,8 -FN:68,Router.constructor -FNDA:8,Router.constructor -DA:69,8 -DA:70,8 -DA:71,8 +BRDA:441,18,0,- +DA:443,0 +DA:445,0 +DA:449,0 +DA:455,0 +FN:455,Router.rolloverVaultDeposit +FNDA:0,Router.rolloverVaultDeposit +DA:457,0 +DA:460,0 +DA:463,0 +DA:464,0 +DA:467,0 DA:72,8 +FN:72,Router.constructor +FNDA:8,Router.constructor DA:73,8 DA:74,8 +DA:75,8 +DA:76,8 DA:77,8 DA:78,8 DA:79,8 -DA:80,8 -DA:88,7 -FN:88,Router.approveCollaterals +DA:82,8 +DA:83,8 +DA:84,8 +DA:85,8 +DA:93,7 +FN:93,Router.approveCollaterals FNDA:7,Router.approveCollaterals -DA:89,7 -DA:91,7 -DA:92,28 -BRDA:92,0,0,14 -DA:94,14 -DA:95,14 -DA:103,7 -FN:103,Router.approveUsdTokens +DA:94,7 +DA:96,7 +DA:97,28 +BRDA:97,0,0,14 +DA:99,14 +DA:100,14 +DA:108,7 +FN:108,Router.approveUsdTokens FNDA:7,Router.approveUsdTokens -DA:104,7 -DA:106,7 -DA:107,8 -DA:116,3 -FN:116,Router._pullUsdToken +DA:109,7 +DA:111,7 +DA:112,14 +DA:121,3 +FN:121,Router._pullUsdToken FNDA:3,Router._pullUsdToken -DA:117,3 -BRDA:117,1,0,- -BRDA:117,1,1,3 -DA:120,0 -DA:124,3 -DA:127,3 -DA:130,3 -DA:139,0 -FN:139,Router._pullInConsol +DA:122,3 +BRDA:122,1,0,- +BRDA:122,1,1,3 +DA:125,0 +DA:129,3 +DA:132,3 +DA:135,3 +DA:144,0 +FN:144,Router._pullInConsol FNDA:0,Router._pullInConsol -DA:140,0 -BRDA:140,2,0,- -BRDA:140,2,1,3 -DA:143,0 -DA:147,0 -DA:149,0 -DA:151,0 -DA:161,1 -FN:161,Router._pullCollateral +DA:145,0 +BRDA:145,2,0,- +BRDA:145,2,1,3 +DA:148,0 +DA:152,0 +DA:154,0 +DA:156,0 +DA:166,1 +FN:166,Router._pullCollateral FNDA:1,Router._pullCollateral -DA:162,1 -BRDA:162,3,0,1 -BRDA:162,3,1,1 -DA:164,1 -DA:167,0 -DA:178,6 -FN:178,Router._calculateCost -FNDA:6,Router._calculateCost +DA:167,1 +BRDA:167,3,0,1 +BRDA:167,3,1,1 +DA:169,1 +DA:172,0 DA:183,6 -DA:184,6 -DA:187,6 -DA:190,6 -DA:196,3 -FN:196,Router.calculateCollectedAmounts +FN:183,Router._calculateCost +FNDA:6,Router._calculateCost +DA:188,6 +DA:189,6 +DA:192,6 +DA:195,6 +DA:201,3 +FN:201,Router.calculateCollectedAmounts FNDA:3,Router.calculateCollectedAmounts -DA:201,2 -BRDA:201,4,0,2 -BRDA:201,4,1,4 -DA:202,2 -DA:204,2 +DA:206,2 +BRDA:206,4,0,2 +BRDA:206,4,1,4 DA:207,2 -DA:208,2 -DA:209,0 -DA:210,2 -DA:214,4 -DA:216,4 -DA:217,4 +DA:209,2 +DA:211,2 +DA:212,2 +DA:213,0 +DA:214,2 DA:218,4 -DA:219,4 DA:220,4 DA:221,4 -BRDA:221,5,0,- -DA:222,0 -DA:231,0 -FN:231,Router.updatePriceFeedsAndRequestMortgage +DA:222,4 +DA:223,4 +DA:224,4 +DA:225,4 +BRDA:225,5,0,- +DA:226,0 +DA:235,0 +FN:235,Router.updatePriceFeedsAndRequestMortgage FNDA:0,Router.updatePriceFeedsAndRequestMortgage -DA:243,0 -DA:246,0 -DA:248,0 -DA:254,3 -FN:254,Router.requestMortgage +DA:247,0 +DA:250,0 +DA:252,0 +DA:258,3 +FN:258,Router.requestMortgage FNDA:3,Router.requestMortgage -DA:264,3 -DA:266,3 -BRDA:266,6,0,1 -DA:267,1 -BRDA:267,7,0,- -DA:268,0 -DA:270,1 -DA:273,3 -BRDA:273,8,0,2 -DA:274,2 -BRDA:274,9,0,- -DA:275,0 -DA:277,2 -DA:280,3 -DA:281,3 +DA:268,3 +DA:270,3 +BRDA:270,6,0,1 +DA:271,1 +BRDA:271,7,0,- +DA:272,0 +DA:274,1 +DA:277,3 +BRDA:277,8,0,2 +DA:278,2 +BRDA:278,9,0,- +DA:279,0 +DA:281,2 DA:284,3 -DA:290,0 -FN:290,Router.periodPay +DA:285,3 +DA:288,3 +DA:294,0 +FN:294,Router.periodPay FNDA:0,Router.periodPay -DA:292,0 -DA:295,0 -DA:298,0 +DA:296,0 DA:299,0 -DA:300,0 -DA:306,0 -FN:306,Router.penaltyPay +DA:302,0 +DA:303,0 +DA:304,0 +DA:310,0 +FN:310,Router.penaltyPay FNDA:0,Router.penaltyPay -DA:308,0 -DA:311,0 -DA:314,0 +DA:312,0 DA:315,0 -DA:316,0 -DA:322,0 -FN:322,Router.refinance +DA:318,0 +DA:319,0 +DA:320,0 +DA:326,0 +FN:326,Router.refinance FNDA:0,Router.refinance -DA:324,0 -DA:327,0 -DA:330,0 -DA:333,0 -DA:336,0 -DA:339,0 -DA:342,0 +DA:328,0 +DA:331,0 +DA:334,0 +DA:337,0 +DA:340,0 DA:343,0 DA:346,0 -DA:354,1 -FN:354,Router._getOrCreateOriginationPool +DA:347,0 +DA:350,0 +DA:358,1 +FN:358,Router._getOrCreateOriginationPool FNDA:1,Router._getOrCreateOriginationPool -DA:355,1 -DA:357,1 -BRDA:357,10,0,- +DA:362,1 DA:365,1 -FN:365,Router.originationPoolDeposit -FNDA:1,Router.originationPoolDeposit -DA:367,1 -DA:370,1 +BRDA:365,10,0,- DA:373,1 -DA:376,1 -DA:377,1 -DA:380,1 -DA:386,2 -FN:386,Router.convert +FN:373,Router.originationPoolDeposit +FNDA:1,Router.originationPoolDeposit +DA:375,1 +DA:378,1 +DA:381,1 +DA:384,1 +DA:385,1 +DA:388,1 +DA:394,2 +FN:394,Router.convert FNDA:2,Router.convert -DA:392,3 -BRDA:392,11,0,- -BRDA:392,11,1,1 -DA:393,0 -DA:396,3 -BRDA:396,12,0,- -BRDA:396,12,1,1 -DA:398,0 -DA:401,3 -BRDA:401,13,0,- -BRDA:401,13,1,1 -DA:402,0 -DA:405,3 -BRDA:405,14,0,2 -BRDA:405,14,1,1 -DA:406,2 -DA:410,1 -DA:417,0 -FN:417,Router.wrap -FNDA:0,Router.wrap -DA:419,0 -BRDA:419,15,0,- -BRDA:419,15,1,- -DA:420,0 -DA:421,0 -BRDA:421,16,0,- -DA:422,0 +DA:400,3 +BRDA:400,11,0,- +BRDA:400,11,1,1 +DA:401,0 +DA:404,3 +BRDA:404,12,0,- +BRDA:404,12,1,1 +DA:406,0 +DA:409,3 +BRDA:409,13,0,- +BRDA:409,13,1,1 +DA:410,0 +DA:413,3 +BRDA:413,14,0,2 +BRDA:413,14,1,1 +DA:414,2 +DA:418,1 DA:425,0 +FN:425,Router.wrap +FNDA:0,Router.wrap +DA:427,0 +BRDA:427,15,0,- +BRDA:427,15,1,- DA:428,0 -BRDA:428,17,0,- DA:429,0 +BRDA:429,16,0,- +DA:430,0 DA:433,0 -BRDA:433,18,0,- -DA:435,0 +DA:436,0 +BRDA:436,17,0,- DA:437,0 DA:441,0 -FNF:34 -FNH:13 -LF:258 -LH:83 +BRDA:441,18,0,- +DA:443,0 +DA:445,0 +DA:449,0 +DA:455,0 +FN:455,Router.rolloverVaultDeposit +FNDA:0,Router.rolloverVaultDeposit +DA:457,0 +DA:460,0 +DA:463,0 +DA:464,0 +DA:467,0 +FNF:36 +FNH:12 +LF:272 +LH:84 BRF:56 BRH:14 end_of_record @@ -1321,10 +1351,10 @@ DA:22,257 FN:22,MockERC20.burn FNDA:257,MockERC20.burn DA:23,257 -DA:10,145 +DA:10,150 FN:10,MockERC20.constructor -FNDA:145,MockERC20.constructor -DA:11,145 +FNDA:150,MockERC20.constructor +DA:11,150 DA:14,50 FN:14,MockERC20.decimals FNDA:50,MockERC20.decimals diff --git a/script/BaseScript.s.sol b/script/BaseScript.s.sol index 983562a..f721e15 100644 --- a/script/BaseScript.s.sol +++ b/script/BaseScript.s.sol @@ -9,12 +9,26 @@ contract BaseScript is Script { uint256 public deployerPrivateKey; bool public isTest; + // Core Args + address public wrappedNativeTokenAddress; + address public generalManagerAddress; + address public pythAddress; + function setUp() public virtual { deployerAddress = vm.envAddress("DEPLOYER_ADDRESS"); + console.log("Deployer address: %s", deployerAddress); // deployerPrivateKey = vm.envUint("DEPLOYER_PRIVATE_KEY"); isTest = vm.envBool("IS_TEST"); // require(deployerAddress == vm.addr(deployerPrivateKey), "Deployer address and private key do not match"); + + // Setting up core args + wrappedNativeTokenAddress = vm.envAddress("WRAPPED_NATIVE_TOKEN_ADDRESS"); + console.log("Wrapped native token address: %s", wrappedNativeTokenAddress); + generalManagerAddress = vm.envAddress("GENERAL_MANAGER_ADDRESS"); + console.log("General manager address: %s", generalManagerAddress); + pythAddress = vm.envAddress("PYTH_ADDRESS"); + console.log("Pyth address: %s", pythAddress); } function run() public virtual { diff --git a/script/DeployAll.s.sol b/script/DeployAll.s.sol index e042d81..be5347a 100644 --- a/script/DeployAll.s.sol +++ b/script/DeployAll.s.sol @@ -2,9 +2,10 @@ pragma solidity ^0.8.20; /// forge-lint: disable-next-line(unused-import) -import {DeployFulfillmentVaultScript, console} from "./DeployFulfillmentVault.s.sol"; +import {DeployRouterScript} from "./DeployRouter.s.sol"; +import {console} from "forge-std/console.sol"; -contract DeployAllScript is DeployFulfillmentVaultScript { +contract DeployAllScript is DeployRouterScript { function setUp() public virtual override { super.setUp(); } diff --git a/script/DeployFulfillmentVault.s.sol b/script/DeployFulfillmentVault.s.sol index cb2eb6c..b2b1f0c 100644 --- a/script/DeployFulfillmentVault.s.sol +++ b/script/DeployFulfillmentVault.s.sol @@ -1,7 +1,8 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.20; -import {DeployRolloverVaultScript, console} from "./DeployRolloverVault.s.sol"; +import {DeployRolloverVaultScript} from "./DeployRolloverVault.s.sol"; +import {console} from "forge-std/console.sol"; import {FulfillmentVault} from "../src/FulfillmentVault.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; @@ -54,6 +55,12 @@ contract DeployFulfillmentVaultScript is DeployRolloverVaultScript { // Deploy the proxy with the initializer data ERC1967Proxy proxy = new ERC1967Proxy(address(fulfillmentVaultImplementation), initializerData); fulfillmentVault = FulfillmentVault(payable(address(proxy))); + + // Grant the keeper role to the vault admin address + fulfillmentVault.grantRole(fulfillmentVault.KEEPER_ROLE(), fulfillmentVaultAdminAddress); + + // Grant the whitelist role to the vault admin address + fulfillmentVault.grantRole(fulfillmentVault.WHITELIST_ROLE(), fulfillmentVaultAdminAddress); } function logFulfillmentVault(string memory objectKey) public returns (string memory json) { diff --git a/script/DeployRolloverVault.s.sol b/script/DeployRolloverVault.s.sol index 9098488..686f431 100644 --- a/script/DeployRolloverVault.s.sol +++ b/script/DeployRolloverVault.s.sol @@ -1,11 +1,12 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.20; -import {DeployRouterScript, console} from "./DeployRouter.s.sol"; +import {BaseScript} from "./BaseScript.s.sol"; +import {console} from "forge-std/console.sol"; import {RolloverVault} from "../src/RolloverVault.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; -contract DeployRolloverVaultScript is DeployRouterScript { +contract DeployRolloverVaultScript is BaseScript { string public rolloverVaultName; string public rolloverVaultSymbol; uint8 public rolloverVaultDecimals; @@ -16,6 +17,7 @@ contract DeployRolloverVaultScript is DeployRouterScript { function setUp() public virtual override { super.setUp(); + // Setting up rollover vault args rolloverVaultName = vm.envString("ROLLOVER_VAULT_NAME"); console.log("Rollover vault name: %s", rolloverVaultName); rolloverVaultSymbol = vm.envString("ROLLOVER_VAULT_SYMBOL"); @@ -53,6 +55,12 @@ contract DeployRolloverVaultScript is DeployRouterScript { // Deploy the proxy with the initializer data ERC1967Proxy proxy = new ERC1967Proxy(address(rolloverVaultImplementation), initializerData); rolloverVault = RolloverVault(payable(address(proxy))); + + // Grant the keeper role to the vault admin address + rolloverVault.grantRole(rolloverVault.KEEPER_ROLE(), rolloverVaultAdminAddress); + + // Grant the default admin role to the vault admin address + rolloverVault.grantRole(rolloverVault.DEFAULT_ADMIN_ROLE(), rolloverVaultAdminAddress); } function logRolloverVault(string memory objectKey) public returns (string memory json) { diff --git a/script/DeployRouter.s.sol b/script/DeployRouter.s.sol index 5a07ab1..7ba27f1 100644 --- a/script/DeployRouter.s.sol +++ b/script/DeployRouter.s.sol @@ -1,23 +1,15 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.20; -import {BaseScript, console} from "./BaseScript.s.sol"; +import {DeployFulfillmentVaultScript} from "./DeployFulfillmentVault.s.sol"; +import {console} from "forge-std/console.sol"; import {Router} from "../src/Router.sol"; -contract DeployRouterScript is BaseScript { - address public wrappedNativeTokenAddress; - address public generalManagerAddress; - address public pythAddress; +contract DeployRouterScript is DeployFulfillmentVaultScript { Router public router; function setUp() public virtual override { super.setUp(); - wrappedNativeTokenAddress = vm.envAddress("WRAPPED_NATIVE_TOKEN_ADDRESS"); - console.log("Wrapped native token address: %s", wrappedNativeTokenAddress); - generalManagerAddress = vm.envAddress("GENERAL_MANAGER_ADDRESS"); - console.log("General manager address: %s", generalManagerAddress); - pythAddress = vm.envAddress("PYTH_ADDRESS"); - console.log("Pyth address: %s", pythAddress); } function run() public virtual override { @@ -28,7 +20,7 @@ contract DeployRouterScript is BaseScript { } function deployRouter() public { - router = new Router(wrappedNativeTokenAddress, generalManagerAddress, pythAddress); + router = new Router(wrappedNativeTokenAddress, generalManagerAddress, address(rolloverVault), pythAddress); router.approveCollaterals(); router.approveUsdTokens(); } diff --git a/script/UpgradeFulfillmentVault.s.sol b/script/UpgradeFulfillmentVault.s.sol new file mode 100644 index 0000000..4784045 --- /dev/null +++ b/script/UpgradeFulfillmentVault.s.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +import {BaseScript} from "./BaseScript.s.sol"; +import {console} from "forge-std/console.sol"; +import {FulfillmentVault} from "../src/FulfillmentVault.sol"; +import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +contract UpgradeFulfillmentVaultScript is BaseScript { + FulfillmentVault public fulfillmentVault; + + function setUp() public virtual override { + super.setUp(); + fulfillmentVault = FulfillmentVault(payable(vm.envAddress("FULFILLMENT_VAULT_ADDRESS"))); + console.log("Fulfillment vault currently deployed at: %s", address(fulfillmentVault)); + } + + function run() public virtual override { + vm.startBroadcast(); + upgradeFulfillmentVault(); + vm.stopBroadcast(); + } + + function upgradeFulfillmentVault() public { + // Deploy the new implementation of the fulfillmentVault + FulfillmentVault fulfillmentVaultImplementation = new FulfillmentVault(); + + // Console log the new implementation address + console.log("New fulfillment vault implementation deployed at: %s", address(fulfillmentVaultImplementation)); + + // Upgrade the fulfillmentVault to the new implementation + fulfillmentVault.upgradeToAndCall(address(fulfillmentVaultImplementation), ""); + } +} diff --git a/src/FulfillmentVault.sol b/src/FulfillmentVault.sol index 3799178..0a3a64e 100644 --- a/src/FulfillmentVault.sol +++ b/src/FulfillmentVault.sol @@ -11,6 +11,7 @@ import {IFulfillmentVault} from "./interfaces/IFulfillmentVault/IFulfillmentVaul import {IUSDX} from "@core/interfaces/IUSDX/IUSDX.sol"; import {IOrderPool} from "@core/interfaces/IOrderPool/IOrderPool.sol"; import {IGeneralManager} from "@core/interfaces/IGeneralManager/IGeneralManager.sol"; +import {HLConstants} from "@hyper-evm-lib/src/common/HLConstants.sol"; /** * @title FulfillmentVault @@ -219,7 +220,7 @@ contract FulfillmentVault is LiquidityVault, IFulfillmentVault { function bridgeAssetFromEvmToCore(address asset, uint256 amount) external override onlyRole(KEEPER_ROLE) whenPaused { emit AssetBridgedFromEvmToCore(asset, amount); if (asset == address(0)) { - CoreWriterLib.bridgeToCore(uint64(150), amount); + CoreWriterLib.bridgeToCore(HLConstants.hypeTokenIndex(), amount); } else { CoreWriterLib.bridgeToCore(asset, amount); } @@ -250,5 +251,10 @@ contract FulfillmentVault is LiquidityVault, IFulfillmentVault { // Emit event emit OrderFilled(index, hintPrevIds); IOrderPool(orderPool()).processOrders(indices, hintPrevIdsList); + // Send collected fees to the keeper by sending the native balance + (bool success,) = _msgSender().call{value: address(this).balance}(""); + if (!success) { + revert FailedToWithdrawNativeGas(address(this).balance); + } } } diff --git a/src/Router.sol b/src/Router.sol index c6ccba6..9955fba 100644 --- a/src/Router.sol +++ b/src/Router.sol @@ -19,7 +19,7 @@ import { IOriginationPoolScheduler, IOriginationPoolSchedulerErrors } from "@core/interfaces/IOriginationPoolScheduler/IOriginationPoolScheduler.sol"; -import {IRouter} from "./interfaces/IRouter.sol"; +import {IRouter} from "./interfaces/IRouter/IRouter.sol"; import {IMortgageNFT} from "@core/interfaces/IMortgageNFT/IMortgageNFT.sol"; import {IMortgageNFTErrors} from "@core/interfaces/IMortgageNFT/IMortgageNFTErrors.sol"; import {IERC20Errors} from "@openzeppelin/contracts/interfaces/draft-IERC6093.sol"; @@ -28,6 +28,7 @@ import {IPyth} from "@pythnetwork/IPyth.sol"; import {PythErrors} from "@pythnetwork/PythErrors.sol"; import {MortgageMath} from "@core/libraries/MortgageMath.sol"; import {MortgagePosition} from "@core/types/MortgagePosition.sol"; +import {IRolloverVault} from "./interfaces/IRolloverVault/IRolloverVault.sol"; /** * @title Router @@ -50,6 +51,8 @@ contract Router is /// @inheritdoc IRouter address public immutable generalManager; /// @inheritdoc IRouter + address public immutable rolloverVault; + /// @inheritdoc IRouter address public immutable pyth; /// @inheritdoc IRouter address public immutable wrappedNativeToken; @@ -63,11 +66,13 @@ contract Router is /** * @param _wrappedNativeToken The address of the wrapped native token (i.e., whype: 0x555...) * @param _generalManager The address of the general manager contract + * @param _rolloverVault The address of the rollover vault contract * @param _pyth The address of the Pyth contract */ - constructor(address _wrappedNativeToken, address _generalManager, address _pyth) { + constructor(address _wrappedNativeToken, address _generalManager, address _rolloverVault, address _pyth) { wrappedNativeToken = _wrappedNativeToken; generalManager = _generalManager; + rolloverVault = _rolloverVault; pyth = _pyth; usdx = IGeneralManager(_generalManager).usdx(); consol = IGeneralManager(_generalManager).consol(); @@ -443,4 +448,22 @@ contract Router is // Transfer the output token to the user IERC20(outputToken).safeTransfer(_msgSender(), IERC20(outputToken).balanceOf(address(this))); } + + /** + * @inheritdoc IRouter + */ + function rolloverVaultDeposit(address usdToken, uint256 usdTokenAmount) external { + // Convert the usdTokenAmount to USDX + uint256 usdxAmount = convert(usdToken, usdx, usdTokenAmount); + + // Pull in the usdToken from the user + _pullUsdToken(usdToken, usdxAmount); + + // Deposit the USDX into the rollover vault + IUSDX(usdx).approve(rolloverVault, usdxAmount); + IRolloverVault(rolloverVault).deposit(usdx, usdxAmount); + + // Transfer the rollover vault share tokens to the user + IRolloverVault(rolloverVault).transfer(msg.sender, IRolloverVault(rolloverVault).balanceOf(address(this))); + } } diff --git a/src/interfaces/IFulfillmentVault/IFulfillmentVault.sol b/src/interfaces/IFulfillmentVault/IFulfillmentVault.sol index 9457067..bb22930 100644 --- a/src/interfaces/IFulfillmentVault/IFulfillmentVault.sol +++ b/src/interfaces/IFulfillmentVault/IFulfillmentVault.sol @@ -3,13 +3,14 @@ pragma solidity ^0.8.20; import {ILiquidityVault} from "../ILiquidityVault/ILiquidityVault.sol"; import {IFulfillmentVaultEvents} from "./IFulfillmentVaultEvents.sol"; +import {IFulfillmentVaultErrors} from "./IFulfillmentVaultErrors.sol"; /** * @title IFulfillmentVault * @author @SocksNFlops * @notice Interface for FulfillmentVault, a vault that facilitates liquidity provisioning for fulfilling purchase orders in the OrderPool. */ -interface IFulfillmentVault is ILiquidityVault, IFulfillmentVaultEvents { +interface IFulfillmentVault is ILiquidityVault, IFulfillmentVaultEvents, IFulfillmentVaultErrors { /** * @notice Gets the address of the wrapped native token * @return The address of the wrapped native token (i.e., whype: 0x555...) diff --git a/src/interfaces/IFulfillmentVault/IFulfillmentVaultErrors.sol b/src/interfaces/IFulfillmentVault/IFulfillmentVaultErrors.sol new file mode 100644 index 0000000..418090f --- /dev/null +++ b/src/interfaces/IFulfillmentVault/IFulfillmentVaultErrors.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.20; + +/** + * @title IFulfillmentVaultErrors + * @author @SocksNFlops + * @notice Interface for errors emitted by FulfillmentVaults. + */ +interface IFulfillmentVaultErrors { + /** + * @notice Thrown when the fulfillment vault fails to withdraw native gas + * @param amount The amount of native gas to withdraw + */ + error FailedToWithdrawNativeGas(uint256 amount); +} diff --git a/src/interfaces/IRouter.sol b/src/interfaces/IRouter.sol deleted file mode 100644 index c8f842b..0000000 --- a/src/interfaces/IRouter.sol +++ /dev/null @@ -1,168 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; - -import {CreationRequest} from "@core/types/orders/OrderRequests.sol"; -import {OPoolConfigId} from "@core/types/OPoolConfigId.sol"; -import {IRouterErrors} from "./IRouterErrors.sol"; - -/** - * @title IRouter - * @author @SocksNFlops - * @notice Interface for the Router contract meant to facilitate user interactions with core contracts of the Cash protocol. - */ -interface IRouter is IRouterErrors { - /** - * @notice The address of the general manager contract - * @return The address of the general manager contract - */ - function generalManager() external view returns (address); - - /** - * @notice The address of the Pyth contract - * @return The address of the Pyth contract - */ - function pyth() external view returns (address); - - /** - * @notice The address of the wrapped native token - * @return The address of the wrapped native token - */ - function wrappedNativeToken() external view returns (address); - - /** - * @notice The address of the USDX token contract - * @return The address of the USDX token contract - */ - function usdx() external view returns (address); - - /** - * @notice The address of the Consol token contract - * @return The address of the Consol token contract - */ - function consol() external view returns (address); - - /** - * @notice The address of the origination pool scheduler contract - * @return The address of the origination pool scheduler contract - */ - function originationPoolScheduler() external view returns (address); - - /** - * @notice Approve all the collaterals to be spent by the general manager - */ - function approveCollaterals() external; - - /** - * @notice Approve all the usdTokens to be spent by the USDX contract (for depositing into USDX) - */ - function approveUsdTokens() external; - - /** - * @notice Calculates the amounts that will be collected from the borrower for a given creation request before sending the request to the general manager - * @param creationRequest The creation request - * @return collateralCollected The amount of collateral that will be collected from the borrower - * @return usdxCollected The amount of USDX that will be collected from the borrower - * @return paymentAmount The amount of USDX that will be paid to the fulfilller - * @return collateralDecimals The decimals of the collateral token - */ - function calculateCollectedAmounts(CreationRequest calldata creationRequest) - external - view - returns (uint256 collateralCollected, uint256 usdxCollected, uint256 paymentAmount, uint8 collateralDecimals); - - /** - * @notice Request a mortgage - * @param usdToken The address of the usdToken to pull in - * @param creationRequest The creation request - * @param isNative Whether the collateral is the native token or not (i.e., whype: 0x555...) - * @param maxCollected The maximum amount that can be collected from the borrower (in USDX if non-compounding, in collateral if compounding) - * @return collateralCollected The amount of collateral collected - * @return usdxCollected The amount of USDX collected - * @return paymentAmount The amount of payment to be made - * @return collateralDecimals The decimals of the collateral - */ - function requestMortgage( - address usdToken, - CreationRequest calldata creationRequest, - bool isNative, - uint256 maxCollected - ) - external - payable - returns (uint256 collateralCollected, uint256 usdxCollected, uint256 paymentAmount, uint8 collateralDecimals); - - /** - * @notice Request a mortgage - * @param priceUpdates The price updates to send to the Pyth contract - * @param usdToken The address of the usdToken to pull in - * @param creationRequest The creation request - * @param isNative Whether the collateral is the native token or not (i.e., whype: 0x555...) - * @param maxCollected The maximum amount that can be collected from the borrower (in USDX if non-compounding, in collateral if compounding) - * @return collateralCollected The amount of collateral collected - * @return usdxCollected The amount of USDX collected - * @return paymentAmount The amount of payment to be made - * @return collateralDecimals The decimals of the collateral - */ - function updatePriceFeedsAndRequestMortgage( - bytes[] calldata priceUpdates, - address usdToken, - CreationRequest calldata creationRequest, - bool isNative, - uint256 maxCollected - ) - external - payable - returns (uint256 collateralCollected, uint256 usdxCollected, uint256 paymentAmount, uint8 collateralDecimals); - - /** - * @notice Make a periodic payment on a mortgage - * @param inputToken The address of the input token to pull in - * @param tokenId The token ID - * @param inputAmount The amount of input token to pull in - */ - function periodPay(address inputToken, uint256 tokenId, uint256 inputAmount) external; - - /** - * @notice Make a penalty payment on a mortgage - * @param inputToken The address of the input token to pull in - * @param tokenId The token ID - * @param inputAmount The amount of input token to pull in - */ - function penaltyPay(address inputToken, uint256 tokenId, uint256 inputAmount) external; - - /** - * @notice Refinance a mortgage - * @param inputToken The address of the input token to pull in - * @param tokenId The token ID of the mortgage to refinance - * @param newTotalPeriods The new total periods of the mortgage - */ - function refinance(address inputToken, uint256 tokenId, uint8 newTotalPeriods) external; - - /** - * @notice Deposit into an origination pool - * @param oPoolConfigId The OPoolConfigId of the origination pool to deposit into - * @param usdToken The address of the usdToken to pull in - * @param usdxAmount The amount of USDX to pull in - */ - function originationPoolDeposit(OPoolConfigId oPoolConfigId, address usdToken, uint256 usdxAmount) external; - - /** - * @notice Quotes the amount of output token that would be received for a given amount of input token - * @param inputToken The address of the input token - * @param outputToken The address of the output token - * @param inputAmount The amount of input token to convert - * @return outputAmount The amount of output token received - */ - function convert(address inputToken, address outputToken, uint256 inputAmount) - external - view - returns (uint256 outputAmount); - - /** - * @notice Wraps tokens from usdToken -> usdx -> consol - * @param inputToken The address of the input token - * @param outputToken The address of the output token - * @param inputAmount The amount of input token to convert - */ - function wrap(address inputToken, address outputToken, uint256 inputAmount) external; -} diff --git a/src/interfaces/IRouter/IRouter.sol b/src/interfaces/IRouter/IRouter.sol index c8f842b..097edac 100644 --- a/src/interfaces/IRouter/IRouter.sol +++ b/src/interfaces/IRouter/IRouter.sol @@ -17,6 +17,12 @@ interface IRouter is IRouterErrors { */ function generalManager() external view returns (address); + /** + * @notice The address of the rollover vault contract + * @return The address of the rollover vault contract + */ + function rolloverVault() external view returns (address); + /** * @notice The address of the Pyth contract * @return The address of the Pyth contract @@ -142,9 +148,9 @@ interface IRouter is IRouterErrors { * @notice Deposit into an origination pool * @param oPoolConfigId The OPoolConfigId of the origination pool to deposit into * @param usdToken The address of the usdToken to pull in - * @param usdxAmount The amount of USDX to pull in + * @param usdTokenAmount The amount of usdToken to pull in */ - function originationPoolDeposit(OPoolConfigId oPoolConfigId, address usdToken, uint256 usdxAmount) external; + function originationPoolDeposit(OPoolConfigId oPoolConfigId, address usdToken, uint256 usdTokenAmount) external; /** * @notice Quotes the amount of output token that would be received for a given amount of input token @@ -165,4 +171,11 @@ interface IRouter is IRouterErrors { * @param inputAmount The amount of input token to convert */ function wrap(address inputToken, address outputToken, uint256 inputAmount) external; + + /** + * @notice Deposit into the rollover vault + * @param usdToken The address of the usdToken to pull in + * @param usdTokenAmount The amount of usdToken to pull in + */ + function rolloverVaultDeposit(address usdToken, uint256 usdTokenAmount) external; } diff --git a/src/interfaces/IRouterErrors.sol b/src/interfaces/IRouterErrors.sol deleted file mode 100644 index 8315c05..0000000 --- a/src/interfaces/IRouterErrors.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.20; - -/** - * @title IRouterErrors - * @author @SocksNFlops - * @notice Errors for the Router contract - */ -interface IRouterErrors { - /** - * @notice Thrown when the collected amount exceeds the maximum permitted collected amount - * @param token The token that was collected - * @param collectedAmount The amount that was collected - * @param maxColllected The maximum amount that can be collected - */ - error CollectedAmountExceedsMaximum(address token, uint256 collectedAmount, uint256 maxColllected); -} diff --git a/test/BaseTest.t.sol b/test/BaseTest.t.sol index d4ccd09..96e5b98 100644 --- a/test/BaseTest.t.sol +++ b/test/BaseTest.t.sol @@ -41,6 +41,7 @@ import {ConversionQueue} from "@core/ConversionQueue.sol"; import {IPyth} from "@pythnetwork/IPyth.sol"; import {MockPyth} from "@pythnetwork/MockPyth.sol"; import {MockERC20} from "./mocks/MockERC20.sol"; +import {RolloverVault} from "../src/RolloverVault.sol"; contract BaseTest is Test { using OPoolConfigIdLibrary for OPoolConfigId; @@ -51,6 +52,8 @@ contract BaseTest is Test { address public borrower = makeAddr("borrower"); address public fulfiller = makeAddr("fulfiller"); address public rando = makeAddr("rando"); + address public user = makeAddr("user"); + address public keeper = makeAddr("keeper"); // Mainnet Addresses address public USDT0_ADDRESS = 0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb; @@ -99,11 +102,17 @@ contract BaseTest is Test { uint16 public ogPoolMultiplierBps = 200; // 2% commission // Order Pool Args uint256 public opMaximumOrderDuration = 10 minutes; // Orders expire in 10 minutes - // Constants address public constant WHYPE_ADDRESS = 0x5555555555555555555555555555555555555555; string public constant MORTGAGE_NFT_NAME = "Mortgage NFT"; string public constant MORTGAGE_NFT_SYMBOL = "MNFT"; + // RolloverVault Args + string ROLLLOVER_VAULT_NAME = "Test Rollover Vault"; + string ROLLLOVER_VAULT_SYMBOL = "tRV"; + uint8 ROLLLOVER_VAULT_DECIMALS = 24; // Make this 6 + usdx decimals + uint8 ROLLLOVER_VAULT_DECIMALS_OFFSET = 6; + RolloverVault public rolloverVault; + uint256 public PRIME_AMOUNT = 1e18; // The initial amount of depositableAsset to prime the liquidityVault with (in depositableAsset decimals) function _deployWHype() internal { // Deploy the WHYPE to the 0x555... address @@ -178,11 +187,9 @@ contract BaseTest is Test { function _createUSDX() internal { // Make usdt - // usdt = IERC20(USDT0_ADDRESS); usdt = new MockERC20("USDT", "USDT", 18); vm.label(address(usdt), "USDT"); // Make usdh - // usdh = IERC20(USDH0_ADDRESS); usdh = new MockERC20("USDH", "USDH", 18); vm.label(address(usdh), "USDH"); // Make usdx @@ -196,7 +203,6 @@ contract BaseTest is Test { } function _setupCollaterals() internal { - // ubtc = IERC20(UBTC_ADDRESS); ubtc = new MockERC20("UBTC", "UBTC", 8); vm.label(address(ubtc), "UBTC"); } @@ -247,6 +253,11 @@ contract BaseTest is Test { orderPool.setMaximumOrderDuration(opMaximumOrderDuration); vm.stopPrank(); + // Set the gas fee for the order pool + vm.startPrank(admin); + orderPool.setGasFee(0.01e18); + vm.stopPrank(); + // Set the order pool in the general manager vm.startPrank(admin); generalManager.setOrderPool(address(orderPool)); @@ -368,5 +379,54 @@ contract BaseTest is Test { pyth = new MockPyth(120, 0); // 120 seconds valid time period, 0 update fee } - function test_constructor() public view {} + function primeRolloverVault() public { + // Mint 0.5 PRIME_AMOUNT of usdt0 and usdh to the admin + vm.startPrank(admin); + uint256 usdtAmount = usdx.convertUnderlying(address(usdt), PRIME_AMOUNT / 2); + uint256 usdhAmount = usdx.convertUnderlying(address(usdh), PRIME_AMOUNT / 2); + deal(address(usdt), admin, usdtAmount); + deal(address(usdh), admin, usdhAmount); + vm.stopPrank(); + + // Admin primes the rolloverVault with PRIME_AMOUNT of usdx + vm.startPrank(admin); + usdt.approve(address(usdx), usdtAmount); + usdh.approve(address(usdx), usdhAmount); + usdx.deposit(address(usdt), usdtAmount); + usdx.deposit(address(usdh), usdhAmount); + usdx.approve(address(rolloverVault), PRIME_AMOUNT); + rolloverVault.deposit(address(usdx), PRIME_AMOUNT); + vm.stopPrank(); + + // Transfer the rolloverVault balance to the rolloverVault itself + vm.startPrank(admin); + rolloverVault.transfer(address(rolloverVault), rolloverVault.balanceOf(admin)); + vm.stopPrank(); + } + + function setUpRolloverVault() public { + // Deploy the rolloverVault + RolloverVault rolloverVaultImplementation = new RolloverVault(); + bytes memory initializerData = abi.encodeWithSelector( + RolloverVault.initialize.selector, + ROLLLOVER_VAULT_NAME, + ROLLLOVER_VAULT_SYMBOL, + ROLLLOVER_VAULT_DECIMALS, + ROLLLOVER_VAULT_DECIMALS_OFFSET, + address(generalManager), + address(admin) + ); + ERC1967Proxy proxy = new ERC1967Proxy(address(rolloverVaultImplementation), initializerData); + rolloverVault = RolloverVault(payable(address(proxy))); + + // Prime the rolloverVault + primeRolloverVault(); + + // Grant the keeper the KEEPER_ROLE + vm.startPrank(admin); + rolloverVault.grantRole(rolloverVault.KEEPER_ROLE(), keeper); + vm.stopPrank(); + } + + function test_constructor() public view virtual {} } diff --git a/test/FulfillmentVault.t.sol b/test/FulfillmentVault.t.sol index 6783445..2cc3c6c 100644 --- a/test/FulfillmentVault.t.sol +++ b/test/FulfillmentVault.t.sol @@ -51,11 +51,6 @@ contract FulfillmentVaultTest is BaseTest { FulfillmentVault public fulfillmentVault; - address public user = makeAddr("user"); - address public keeper = makeAddr("keeper"); - - uint256 public PRIME_AMOUNT = 1e18; // The initial amount of depositableAsset to prime the liquidityVault with (in depositableAsset decimals) - function mockTokenInfo( uint32 tokenIndex, address evmContract, @@ -829,7 +824,7 @@ contract FulfillmentVaultTest is BaseTest { function test_fillOrder_completeFlow() public { // Deploying a new router - Router router = new Router(address(whype), address(generalManager), address(pyth)); // Using btc as wrapped native token for testing + Router router = new Router(address(whype), address(generalManager), address(rolloverVault), address(pyth)); // Run the approve functions on the router router.approveCollaterals(); router.approveUsdTokens(); @@ -885,12 +880,14 @@ contract FulfillmentVaultTest is BaseTest { { // Calculate the amount of usdx to collect from the borrower (, uint256 requiredUsdxCollected,,) = router.calculateCollectedAmounts(creationRequest); + // Mint 0.01e18 of native tokens to the borrower + deal(address(borrower), 0.01e18); // Mint the required usdt (NOT usdx) to the borrower and approve it to the router vm.startPrank(borrower); uint256 usdtAmount = router.convert(address(usdx), address(usdt), requiredUsdxCollected); deal(address(usdt), borrower, usdtAmount); usdt.approve(address(router), usdtAmount); - router.requestMortgage{value: 0}(address(usdt), creationRequest, false, 2576e18); + router.requestMortgage{value: 0.01e18}(address(usdt), creationRequest, false, 2576e18); vm.stopPrank(); } @@ -1034,6 +1031,9 @@ contract FulfillmentVaultTest is BaseTest { vm.stopPrank(); } + // Validate that the keeper doesn't have any native balance right now + assertEq(address(keeper).balance, 0, "Caller should have no native balance right now"); + // Keeper fills the order from the order pool { uint256 index = 0; @@ -1051,5 +1051,8 @@ contract FulfillmentVaultTest is BaseTest { assertApproxEqAbs( usdx.balanceOf(address(fulfillmentVault)), 5_050e18, 1000e18, "FulfillmentVault should have ~5_050 usdx" ); + + // Validate keeper has received the gas fee in native tokens + assertEq(address(keeper).balance, 0.01e18, "Caller should have received the gas fee in native tokens"); } } diff --git a/test/RolloverVault.t.sol b/test/RolloverVault.t.sol index 679a990..e62221f 100644 --- a/test/RolloverVault.t.sol +++ b/test/RolloverVault.t.sol @@ -23,77 +23,21 @@ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; contract RolloverVaultTest is BaseTest { using Math for uint256; - string NAME = "Test Rollover Vault"; - string SYMBOL = "tRV"; - uint8 DECIMALS = 26; // ToDo: Make this 8 + usdx decimals???? - uint8 DECIMALS_OFFSET = 8; - - RolloverVault public rolloverVault; - - address public user = makeAddr("user"); - address public keeper = makeAddr("keeper"); - - uint256 public PRIME_AMOUNT = 1e18; // The initial amount of depositableAsset to prime the liquidityVault with (in depositableAsset decimals) - - function primeRolloverVault() public { - // Mint 0.5 PRIME_AMOUNT of usdt0 and usdh to the admin - vm.startPrank(admin); - uint256 usdtAmount = usdx.convertUnderlying(address(usdt), PRIME_AMOUNT / 2); - uint256 usdhAmount = usdx.convertUnderlying(address(usdh), PRIME_AMOUNT / 2); - deal(address(usdt), admin, usdtAmount); - deal(address(usdh), admin, usdhAmount); - vm.stopPrank(); - - // Admin primes the rolloverVault with PRIME_AMOUNT of usdx - vm.startPrank(admin); - usdt.approve(address(usdx), usdtAmount); - usdh.approve(address(usdx), usdhAmount); - usdx.deposit(address(usdt), usdtAmount); - usdx.deposit(address(usdh), usdhAmount); - usdx.approve(address(rolloverVault), PRIME_AMOUNT); - rolloverVault.deposit(address(usdx), PRIME_AMOUNT); - vm.stopPrank(); - - // Transfer the rolloverVault balance to the rolloverVault itself - vm.startPrank(admin); - rolloverVault.transfer(address(rolloverVault), rolloverVault.balanceOf(admin)); - vm.stopPrank(); - } - function setUp() public { // Setup core setUpCore(); - // Deploy the rolloverVault - RolloverVault rolloverVaultImplementation = new RolloverVault(); - bytes memory initializerData = abi.encodeWithSelector( - RolloverVault.initialize.selector, - NAME, - SYMBOL, - DECIMALS, - DECIMALS_OFFSET, - address(generalManager), - address(admin) - ); - ERC1967Proxy proxy = new ERC1967Proxy(address(rolloverVaultImplementation), initializerData); - rolloverVault = RolloverVault(payable(address(proxy))); - - // Prime the rolloverVault - primeRolloverVault(); - - // Grant the keeper the KEEPER_ROLE - vm.startPrank(admin); - rolloverVault.grantRole(rolloverVault.KEEPER_ROLE(), keeper); - vm.stopPrank(); + // Setup RolloverVault + setUpRolloverVault(); } function test_initialize() public { - assertEq(rolloverVault.name(), NAME); - assertEq(rolloverVault.symbol(), SYMBOL); - assertEq(rolloverVault.decimals(), DECIMALS); - assertEq(rolloverVault.decimalsOffset(), DECIMALS_OFFSET); + assertEq(rolloverVault.name(), ROLLLOVER_VAULT_NAME); + assertEq(rolloverVault.symbol(), ROLLLOVER_VAULT_SYMBOL); + assertEq(rolloverVault.decimals(), ROLLLOVER_VAULT_DECIMALS); + assertEq(rolloverVault.decimalsOffset(), ROLLLOVER_VAULT_DECIMALS_OFFSET); assertEq(rolloverVault.totalAssets(), PRIME_AMOUNT); - assertEq(rolloverVault.totalSupply(), PRIME_AMOUNT * (10 ** DECIMALS_OFFSET)); + assertEq(rolloverVault.totalSupply(), PRIME_AMOUNT * (10 ** ROLLLOVER_VAULT_DECIMALS_OFFSET)); assertEq(rolloverVault.depositableAssets()[0], address(usdx)); assertEq(rolloverVault.redeemableAssets()[0], address(usdx)); assertEq(rolloverVault.redeemableAssets()[1], address(consol)); diff --git a/test/Router.t.sol b/test/Router.t.sol index 4c9f6a9..c4c2b73 100644 --- a/test/Router.t.sol +++ b/test/Router.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.20; -import {Test} from "forge-std/Test.sol"; +import {BaseTest} from "./BaseTest.t.sol"; import {Router} from "../src/Router.sol"; import {GeneralManager} from "@core/GeneralManager.sol"; import {IGeneralManager} from "@core/interfaces/IGeneralManager/IGeneralManager.sol"; @@ -41,321 +41,33 @@ import {ConversionQueue} from "@core/ConversionQueue.sol"; import {IPyth} from "@pythnetwork/IPyth.sol"; import {MockPyth} from "@pythnetwork/MockPyth.sol"; -contract RouterTest is Test { +contract RouterTest is BaseTest { using OPoolConfigIdLibrary for OPoolConfigId; - // Actors - address public admin = makeAddr("admin"); - address public lender = makeAddr("lender"); - address public borrower = makeAddr("borrower"); - address public fulfiller = makeAddr("fulfiller"); - address public rando = makeAddr("rando"); - // Router Router public router; - // Tokens - IERC20 public usdt; - IERC20 public usdx; - ForfeitedAssetsPool public forfeitedAssetsPool; - IConsol public consol; - IWNT public whype; - IERC20 public wbtc; - ISubConsol public whypeSubConsol; - ISubConsol public wbtcSubConsol; - // Arguments - address public insuranceFund = makeAddr("insuranceFund"); - uint16 public penaltyRate = 50; - uint16 public refinanceRate = 50; - uint16 public conversionPremiumRate = 5000; - uint16 public priceSpread = 100; - // Components - IGeneralManager public generalManager; - IOriginationPoolScheduler public originationPoolScheduler; - IOriginationPool public originationPool; - IPriceOracle public whypePriceOracle; - IPriceOracle public wbtcPriceOracle; - IInterestRateOracle public interestRateOracle; - ILoanManager public loanManager; - IMortgageNFT public mortgageNFT; - INFTMetadataGenerator public nftMetadataGenerator; - IOrderPool public orderPool; - IConversionQueue public whypeConversionQueue; - IConversionQueue public wbtcConversionQueue; - // Pyth - IPyth public pyth; - // OPool Config - OriginationPoolConfig public originationPoolConfig; - string public namePrefix = "Test Origination Pool"; - string public symbolPrefix = "TOP"; - uint32 public ogDepositPhaseDuration = 1 weeks; - uint32 public ogDeployPhaseDuration = 1 weeks; - uint256 public ogDefaultPoolLimit = 105_000e18; // $105k limit - uint16 public ogPoolLimitGrowthRateBps = 100; // 1% growth per week - uint16 public ogPoolMultiplierBps = 200; // 2% commission - // Order Pool Args - uint256 public opMaximumOrderDuration = 10 minutes; // Orders expire in 10 minutes - - // Constants - address public constant WHYPE_ADDRESS = 0x5555555555555555555555555555555555555555; - string public constant MORTGAGE_NFT_NAME = "Mortgage NFT"; - string public constant MORTGAGE_NFT_SYMBOL = "MNFT"; - - function _deployWHype() internal { - // Deploy the WHYPE to the 0x555... address - deployCodeTo("test/artifacts/WHYPE9.json", WHYPE_ADDRESS); - whype = IWNT(WHYPE_ADDRESS); - } - - function _createGeneralManager() internal { - GeneralManager generalManagerImplementation = new GeneralManager(); - bytes memory initializerData = abi.encodeCall( - GeneralManager.initialize, - ( - address(usdx), - address(consol), - penaltyRate, - refinanceRate, - conversionPremiumRate, - priceSpread, - insuranceFund, - address(interestRateOracle) - ) - ); - vm.startPrank(admin); - ERC1967Proxy proxy = new ERC1967Proxy(address(generalManagerImplementation), initializerData); - vm.label(address(proxy), "GeneralManagerProxy"); - vm.stopPrank(); - generalManager = GeneralManager(payable(address(proxy))); - } - - function _createOriginationPoolConfig() internal { - originationPoolConfig = OriginationPoolConfig({ - namePrefix: namePrefix, - symbolPrefix: symbolPrefix, - consol: address(consol), - usdx: address(usdx), - depositPhaseDuration: ogDepositPhaseDuration, - deployPhaseDuration: ogDeployPhaseDuration, - defaultPoolLimit: ogDefaultPoolLimit, - poolLimitGrowthRateBps: ogPoolLimitGrowthRateBps, - poolMultiplierBps: ogPoolMultiplierBps - }); - } - - function _createOriginationPoolSchedulerAndPools() internal { - OriginationPoolScheduler originationPoolSchedulerImplementation = new OriginationPoolScheduler(); - bytes memory initializerData = - abi.encodeCall(OriginationPoolScheduler.initialize, (address(generalManager), address(admin))); - vm.startPrank(admin); - ERC1967Proxy proxy = new ERC1967Proxy(address(originationPoolSchedulerImplementation), initializerData); - vm.label(address(proxy), "OriginationPoolSchedulerProxy"); - vm.stopPrank(); - originationPoolScheduler = OriginationPoolScheduler(payable(address(proxy))); - - // Create the origination pool config - _createOriginationPoolConfig(); - - // Add the origination pool config to the origination pool scheduler - vm.startPrank(admin); - originationPoolScheduler.addConfig(originationPoolConfig); - vm.stopPrank(); - - // Deploy the origination pool - OPoolConfigId oPoolConfigId = OPoolConfigIdLibrary.toId(originationPoolConfig); - originationPool = IOriginationPool(originationPoolScheduler.deployOriginationPool(oPoolConfigId)); - vm.stopPrank(); - } - - function _createForfeitedAssetsPool() internal { - forfeitedAssetsPool = new ForfeitedAssetsPool("Forfeited Assets Pool", "FAP", admin); - } - - function _createUSDX() internal { - // Make usdt - usdt = new MockERC20("Tether USD", "USDT", 6); - vm.label(address(usdt), "USDT"); - // Make usdx - usdx = new USDX("USDX", "USDX", 18, admin); - // Add usdt to usdx - vm.startPrank(admin); - IAccessControl(address(usdx)).grantRole(Roles.SUPPORTED_TOKEN_ROLE, admin); - USDX(address(usdx)).addSupportedToken(address(usdt), 1e12, 1); - vm.stopPrank(); - } - - function _setupCollaterals() internal { - wbtc = new MockERC20("Wrapped Bitcoin", "WBTC", 8); - vm.label(address(wbtc), "WBTC"); - } - - function _createSubConsols() internal { - // whype first - whypeSubConsol = new SubConsol("WHYPE SubConsol", "WHYPE-SUBCONSOL", address(admin), address(whype)); - // wbtc second - wbtcSubConsol = new SubConsol("Bitcoin SubConsol", "BTC-SUBCONSOL", address(admin), address(wbtc)); - } - - function _createConsol() internal { - consol = new Consol("Consol", "CONSOL", 8, address(admin), address(forfeitedAssetsPool)); - // Add inputs into consol - vm.startPrank(admin); - IAccessControl(address(consol)).grantRole(Roles.SUPPORTED_TOKEN_ROLE, admin); - consol.addSupportedToken(address(usdx)); - consol.addSupportedToken(address(whypeSubConsol)); - consol.addSupportedToken(address(wbtcSubConsol)); - vm.stopPrank(); - } - - function _createLoanManager() internal { - nftMetadataGenerator = new MockNFTMetadataGenerator(); - loanManager = new LoanManager( - MORTGAGE_NFT_NAME, MORTGAGE_NFT_SYMBOL, address(nftMetadataGenerator), address(consol), address(generalManager) - ); - - // Set the loan manager in the general manager - vm.startPrank(admin); - generalManager.setLoanManager(address(loanManager)); - vm.stopPrank(); - } - - function _createOrderPool() internal { - // Create the order pool - orderPool = new OrderPool(address(whype), address(generalManager), admin); - - // Set the maximum order duration - vm.startPrank(admin); - orderPool.setMaximumOrderDuration(opMaximumOrderDuration); - vm.stopPrank(); - - // Set the order pool in the general manager - vm.startPrank(admin); - generalManager.setOrderPool(address(orderPool)); - vm.stopPrank(); - } - function _createConversionQueues() internal { - // Create the WHYPE conversion queue - whypeConversionQueue = new ConversionQueue( - address(whype), - IERC20Metadata(address(whype)).decimals(), - address(whypeSubConsol), - address(consol), - address(generalManager), - admin - ); - // Create the WBTC conversion queue - wbtcConversionQueue = new ConversionQueue( - address(wbtc), - IERC20Metadata(address(wbtc)).decimals(), - address(wbtcSubConsol), - address(consol), - address(generalManager), - admin - ); - - // Have the admin grant the consol's withdraw role to the conversion queue contract - vm.startPrank(admin); - IAccessControl(address(consol)).grantRole(Roles.WITHDRAW_ROLE, address(whypeConversionQueue)); - IAccessControl(address(consol)).grantRole(Roles.WITHDRAW_ROLE, address(wbtcConversionQueue)); - vm.stopPrank(); - - // Have the admin grant the SubConsol's withdraw role to the conversion queue contract - vm.startPrank(admin); - IAccessControl(address(whypeSubConsol)).grantRole(Roles.ACCOUNTING_ROLE, address(whypeConversionQueue)); - IAccessControl(address(wbtcSubConsol)).grantRole(Roles.ACCOUNTING_ROLE, address(wbtcConversionQueue)); - vm.stopPrank(); - - // Have GeneralManager grant the CONVERSION_ROLE to the conversion queue - vm.startPrank(admin); - IAccessControl(address(generalManager)).grantRole(Roles.CONVERSION_ROLE, address(whypeConversionQueue)); - IAccessControl(address(generalManager)).grantRole(Roles.CONVERSION_ROLE, address(wbtcConversionQueue)); - vm.stopPrank(); - } - - function _setupOracles() internal { - interestRateOracle = new MockInterestRateOracle(); - whypePriceOracle = new MockPriceOracle(18); - wbtcPriceOracle = new MockPriceOracle(8); - - // Set the oracles in the GM - vm.startPrank(admin); - generalManager.setInterestRateOracle(address(interestRateOracle)); - generalManager.setPriceOracle(address(whype), address(whypePriceOracle)); - generalManager.setPriceOracle(address(wbtc), address(wbtcPriceOracle)); - vm.stopPrank(); - } - - function _updateSupportedTotalPeriods() internal { - vm.startPrank(admin); - generalManager.updateSupportedMortgagePeriodTerms(address(whype), 36, true); - vm.stopPrank(); - } - - function _updateMinMaxBorrowCaps() internal { - vm.startPrank(admin); - // WHYPE limits - generalManager.setMinimumCap(address(whype), 1e18); // Minimum cap of $1 - generalManager.setMaximumCap(address(whype), 10_000e18); // Maximum cap of $10k - - // WBTC limits - generalManager.setMinimumCap(address(wbtc), 1e18); // Minimum cap of $1 - generalManager.setMaximumCap(address(wbtc), 10_000e18); // Maximum cap of $10k - vm.stopPrank(); - } + // ToDo: RolloverVault Address + // ToDo: RolloverVault Address + // ToDo: RolloverVault Address + // ToDo: RolloverVault Address + // ToDo: RolloverVault Address + // ToDo: RolloverVault Address + address public rolloverVaultAddress; function setUp() public { - // Skip 55 years into the future - skip((31557600) * 55); - - // Deploy the WHYPE and other collaterals (wbtc) - _deployWHype(); - _setupCollaterals(); - - // Create Inputs into Consol - _createForfeitedAssetsPool(); - _createUSDX(); - _createSubConsols(); - - // Create Consol - _createConsol(); - - // Create the general manager - _createGeneralManager(); - // Create the loan manager - _createLoanManager(); - // Set up the origination pool scheduler and pools - _createOriginationPoolSchedulerAndPools(); - // Create the order pool - _createOrderPool(); - // Create the conversion queues - _createConversionQueues(); - - // Set up the oracles - _setupOracles(); - - // Update the supported total periods - _updateSupportedTotalPeriods(); - - // Update the min/max borrow caps - _updateMinMaxBorrowCaps(); - - // Set the origination pool scheduler in the general manager - vm.startPrank(admin); - generalManager.setOriginationPoolScheduler(address(originationPoolScheduler)); - vm.stopPrank(); - - // Deploy the Pyth contract - pyth = new MockPyth(120, 0); // 120 seconds valid time period, 0 update fee + // Setting up the core contracts + setUpCore(); // Deploy the router - router = new Router(address(whype), address(generalManager), address(pyth)); // Using btc as wrapped native token for testing + router = new Router(address(whype), address(generalManager), rolloverVaultAddress, address(pyth)); // Run the approve functions on the router router.approveCollaterals(); router.approveUsdTokens(); } - function test_constructor() public view { + function test_constructor() public view override { assertEq(address(router.generalManager()), address(generalManager), "General Manager address is incorrect"); assertEq(address(router.wrappedNativeToken()), address(whype), "Wrapped native token address is incorrect"); assertEq(address(router.usdx()), generalManager.usdx(), "USDX address is incorrect"); @@ -379,7 +91,7 @@ contract RouterTest is Test { function test_approveCollaterals() public { // Making a new router just for this test - router = new Router(address(whype), address(generalManager), address(pyth)); // Using btc as wrapped native token for testing + router = new Router(address(whype), address(generalManager), address(rolloverVault), address(pyth)); // The WHYPE is already approved because it's the wrappedNativeToken in the constructor // So let's verify it's already approved assertEq( @@ -391,19 +103,19 @@ contract RouterTest is Test { // Call approveCollaterals - this should approve collateral tokens from SubConsols router.approveCollaterals(); - // Verify that WBTC (as collateral from SubConsol) is still approved to max + // Verify that UBTC (as collateral from SubConsol) is still approved to max // This function iterates through consol supported tokens, finds SubConsols, // and approves their collateral tokens assertEq( - wbtc.allowance(address(router), address(generalManager)), + ubtc.allowance(address(router), address(generalManager)), type(uint256).max, - "WBTC collateral should remain approved to max after calling approveCollaterals" + "UBTC collateral should remain approved to max after calling approveCollaterals" ); } function test_approveUsdTokens() public { // Making a new router just for this test - router = new Router(address(whype), address(generalManager), address(pyth)); // Using btc as wrapped native token for testing + router = new Router(address(whype), address(generalManager), address(rolloverVault), address(pyth)); // Check initial state - router should not have approvals for USD tokens yet assertEq(usdt.allowance(address(router), address(usdx)), 0, "USDT should not be approved initially"); @@ -473,10 +185,13 @@ contract RouterTest is Test { vm.stopPrank(); } + // Deal 0.01e18 of native tokens to the borrower + deal(address(borrower), 0.01e18); + // Borrower calls requestMortgage (using usdt NOT usdx) vm.startPrank(borrower); (uint256 collateralCollected, uint256 usdxCollected, uint256 paymentAmount, uint8 collateralDecimals) = - router.requestMortgage{value: 0}(address(usdt), creationRequest, false, 2576e18); // Don't need to pay any fees yet + router.requestMortgage{value: 0.01e18}(address(usdt), creationRequest, false, 2576e18); // Don't need to pay any fees yet vm.stopPrank(); // Calculate expectedPaymentAmount @@ -542,15 +257,14 @@ contract RouterTest is Test { // Calculate the amount of collateral to collect from the borrower (uint256 requiredCollateralCollected,,,) = router.calculateCollectedAmounts(creationRequest); - // Deel the required amount of HYPE to the user - vm.deal(borrower, requiredCollateralCollected); - whype.approve(address(router), requiredCollateralCollected); + // Deel the required amount of HYPE to the user (plus 0.01e18 for the gas fee) + vm.deal(borrower, requiredCollateralCollected + 0.01e18); vm.stopPrank(); // Borrower calls requestMortgage (using usdt NOT usdx) vm.startPrank(borrower); (uint256 collateralCollected, uint256 usdxCollected, uint256 paymentAmount, uint8 collateralDecimals) = - router.requestMortgage{value: requiredCollateralCollected}(address(whype), creationRequest, true, 51e18); // Don't need to pay any fees yet + router.requestMortgage{value: requiredCollateralCollected + 0.01e18}(address(whype), creationRequest, true, 51e18); // Don't need to pay any fees yet vm.stopPrank(); // Calculate expectedPaymentAmount