barterjs-sdk
Version:
Barter Network SDK
850 lines • 118 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "MAPOmnichainServiceRelayV2",
"sourceName": "contracts/MAPOmnichainServiceRelayV2.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "from",
"type": "bytes"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "orderId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fromChain",
"type": "uint256"
}
],
"name": "mapDepositIn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "bytes",
"name": "from",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "orderId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fromChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mapDepositOut",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "fromChain",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "toChain",
"type": "uint256"
}
],
"name": "mapTransferExecute",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes",
"name": "from",
"type": "bytes"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "orderId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fromChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mapTransferIn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes",
"name": "token",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "from",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "orderId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fromChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "toChain",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "to",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "toChainToken",
"type": "bytes"
}
],
"name": "mapTransferOut",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "chainTypes",
"outputs": [
{
"internalType": "enum MAPOmnichainServiceRelayV2.chainType",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_admin",
"type": "address"
}
],
"name": "changeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_receiptProof",
"type": "bytes"
}
],
"name": "depositIn",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "depositNative",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "depositToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "distributeRate",
"outputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "rate",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "address payable",
"name": "_receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "emergencyWithdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getAdmin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "getFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getImplementation",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_wToken",
"type": "address"
},
{
"internalType": "address",
"name": "_managerAddress",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "lightClientManager",
"outputs": [
{
"internalType": "contract ILightClientManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "mosContracts",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orderList",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_address",
"type": "bytes"
},
{
"internalType": "enum MAPOmnichainServiceRelayV2.chainType",
"name": "_type",
"type": "uint8"
}
],
"name": "registerChain",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "selfChainId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "uint256",
"name": "_rate",
"type": "uint256"
}
],
"name": "setDistributeRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_managerAddress",
"type": "address"
}
],
"name": "setLightClientManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "setPause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_register",
"type": "address"
}
],
"name": "setTokenManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "setUnpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "tokenRegister",
"outputs": [
{
"internalType": "contract ITokenRegisterV2",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_receiptProof",
"type": "bytes"
}
],
"name": "transferIn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_to",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_toChain",
"type": "uint256"
}
],
"name": "transferOutNative",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_token",
"type": "address"
},
{
"internalType": "bytes",
"name": "_to",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_toChain",
"type": "uint256"
}
],
"name": "transferOutToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "wToken",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_vaultToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "_vaultAmount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x60c06040523060601b6080524660a05234801561001b57600080fd5b5060016000819055805462ff00001916905560805160601c60a051615a6f620000b860003960008181610596015281816109c901528181610b7e01528181610c800152818161127d01528181611b0f01528181612b1c01528181612c6c015281816135440152818161439b0152614439015260008181610bbb01528181610bfb01528181610fda0152818161101a01526110920152615a6f6000f3fe6080604052600436106101e75760003560e01c80637cb2b79c11610102578063cc9e3e8911610095578063d687c35d11610064578063d687c35d1461062a578063e63ea4081461064a578063f3fef3a31461066a578063fb0f97a81461068a57600080fd5b8063cc9e3e8914610584578063d24c6944146105b8578063d250185c146105d8578063d431b1ac1461061557600080fd5b8063981aff4e116100d1578063981aff4e14610519578063aaf10f4214610539578063affed0e01461054e578063ca0da31f1461056457600080fd5b80637cb2b79c14610487578063848cb5c6146104a75780638d6ffd6a146104bc5780638f283970146104f957600080fd5b80633ea549a21161017a5780635c975abb116101495780635c975abb146103f85780636af6400d146104225780636e9960c314610452578063789728251461046757600080fd5b80633ea549a214610382578063485cc955146103a25780634f1ef286146103c257806352d1902d146103d557600080fd5b806333bb7f91116101b657806333bb7f911461030f5780633659cfe6146103225780633d4a2f6e146103425780633e2f1d0f1461035557600080fd5b80630babd86414610240578063145a65791461027d5780632e7ec23f146102dc5780632f5c5d5e146102ef57600080fd5b3661023b576003546001600160a01b031633146102395760405162461bcd60e51b815260206004820152600b60248201526a37b7363c903baa37b5b2b760a91b60448201526064015b60405180910390fd5b005b600080fd5b34801561024c57600080fd5b50600354610260906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561028957600080fd5b506102bd610298366004615041565b600660205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610274565b6102396102ea36600461525b565b6106aa565b3480156102fb57600080fd5b5061023961030a366004614e0e565b610a24565b61023961031d366004614e0e565b610aa6565b34801561032e57600080fd5b5061023961033d366004614e0e565b610bb0565b6102396103503660046151f0565b610c76565b34801561036157600080fd5b50610375610370366004615041565b610da8565b60405161027491906153d8565b34801561038e57600080fd5b50600454610260906001600160a01b031681565b3480156103ae57600080fd5b506102396103bd366004614e48565b610e42565b6102396103d0366004614ec2565b610fcf565b3480156103e157600080fd5b506103ea611085565b604051908152602001610274565b34801561040457600080fd5b5060015462010000900460ff165b6040519015158152602001610274565b34801561042e57600080fd5b5061041261043d366004615041565b60076020526000908152604090205460ff1681565b34801561045e57600080fd5b50610260611138565b34801561047357600080fd5b50600554610260906001600160a01b031681565b34801561049357600080fd5b506102396104a2366004614e0e565b611147565b3480156104b357600080fd5b506102396111c9565b3480156104c857600080fd5b506104ec6104d7366004615041565b60096020526000908152604090205460ff1681565b6040516102749190615491565b34801561050557600080fd5b50610239610514366004614e0e565b61120b565b34801561052557600080fd5b50610239610534366004614f11565b611273565b34801561054557600080fd5b50610260611394565b34801561055a57600080fd5b506103ea60025481565b34801561057057600080fd5b5061023961057f366004615234565b61139e565b34801561059057600080fd5b506103ea7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c457600080fd5b506102396105d336600461525b565b611521565b3480156105e457600080fd5b506105f86105f33660046152e9565b6117a5565b604080519283526001600160a01b03909116602083015201610274565b34801561062157600080fd5b506102396117fe565b34801561063657600080fd5b5061023961064536600461528b565b61183e565b34801561065657600080fd5b50610239610665366004614e81565b6118cb565b34801561067657600080fd5b50610239610685366004614f70565b61190e565b34801561069657600080fd5b506102396106a5366004614e81565b611b9b565b6106b2611c65565b6106ba611cbf565b600554604051637c55b7bd60e11b8152600091829182916001600160a01b03169063f8ab6f7a906106f1908890889060040161560a565b60006040518083038186803b15801561070957600080fd5b505afa15801561071d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107459190810190614fb7565b92509250925082829061076b5760405162461bcd60e51b815260040161023091906153d8565b50600260008681526009602052604090205460ff16600281111561079157610791615910565b14156108a0576000806107a383611d0b565b9150915061084c82600860008a815260200190815260200160002080546107c990615880565b80601f01602080910402602001604051908101604052809291908181526020018280546107f590615880565b80156108425780601f1061081757610100808354040283529160200191610842565b820191906000526020600020905b81548152906001019060200180831161082557829003601f168201915b505050505061200c565b61088f5760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081b5bdcc818dbdb9d1c9858dd60621b6044820152606401610230565b6108998782612028565b50506109c4565b600160008681526009602052604090205460ff1660028111156108c5576108c5615910565b14156109c45760006108d682612357565b905060005b815181101561089957604051806080016040528060448152602001615968604491398051906020012082828151811061091657610916615926565b60200260200101516020015160008151811061093457610934615926565b602002602001015180602001905181019061094f919061505a565b14156109b25760008061097a84848151811061096d5761096d615926565b602002602001015161255a565b915091506109a082600860008c815260200190815260200160002080546107c990615880565b156109af576109af8982612028565b50505b806109bc816158b5565b9150506108db565b6040517f000000000000000000000000000000000000000000000000000000000000000090869033907f0c7ca64b50e8c246962331a7595739e091f1573ce2a86c420ed9e56fdba358e190600090a4505050610a206001600055565b5050565b610a2c612648565b6001600160a01b0316336001600160a01b031614610a5c5760405162461bcd60e51b8152600401610230906155da565b806001600160a01b038116610a835760405162461bcd60e51b81526004016102309061557a565b50600580546001600160a01b0319166001600160a01b0392909216919091179055565b610aae611c65565b610ab6611cbf565b3480610af45760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b6044820152606401610230565b600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b4457600080fd5b505af1158015610b58573d6000803e3d6000fd5b5050600354610ba293506001600160a01b03169150610b7890503361267b565b848460007f00000000000000000000000000000000000000000000000000000000000000006126b1565b50610bad6001600055565b50565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610bf95760405162461bcd60e51b8152600401610230906154b9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c2b61281f565b6001600160a01b031614610c515760405162461bcd60e51b81526004016102309061552e565b610c5a81612835565b60408051600080825260208201909252610bad918391906128a7565b610c7e611cbf565b7f0000000000000000000000000000000000000000000000000000000000000000811415610ce15760405162461bcd60e51b815260206004820152601060248201526f37b7363c9037ba3432b91031b430b4b760811b6044820152606401610230565b3480610d1f5760405162461bcd60e51b815260206004820152600d60248201526c76616c756520746f6f206c6f7760981b6044820152606401610230565b600360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d6f57600080fd5b505af1158015610d83573d6000803e3d6000fd5b5050600354610da393506001600160a01b03169150339050858486612a21565b505050565b60086020526000908152604090208054610dc190615880565b80601f0160208091040260200160405190810160405280929190818152602001828054610ded90615880565b8015610e3a5780601f10610e0f57610100808354040283529160200191610e3a565b820191906000526020600020905b815481529060010190602001808311610e1d57829003601f168201915b505050505081565b600154610100900460ff1615808015610e5f57506001805460ff16105b80610e785750303b158015610e7857506001805460ff16145b610edb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610230565b6001805460ff1916811790558015610efd576001805461ff0019166101001790555b826001600160a01b038116610f245760405162461bcd60e51b81526004016102309061557a565b826001600160a01b038116610f4b5760405162461bcd60e51b81526004016102309061557a565b600380546001600160a01b038088166001600160a01b0319928316179092556005805492871692909116919091179055610f8433612cb6565b50508015610da3576001805461ff00191681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156110185760405162461bcd60e51b8152600401610230906154b9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661104a61281f565b6001600160a01b0316146110705760405162461bcd60e51b81526004016102309061552e565b61107982612835565b610a20828260016128a7565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111255760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610230565b506000805160206159ac83398151915290565b6000611142612648565b905090565b61114f612648565b6001600160a01b0316336001600160a01b03161461117f5760405162461bcd60e51b8152600401610230906155da565b806001600160a01b0381166111a65760405162461bcd60e51b81526004016102309061557a565b50600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111d1612648565b6001600160a01b0316336001600160a01b0316146112015760405162461bcd60e51b8152600401610230906155da565b611209612d0a565b565b611213612648565b6001600160a01b0316336001600160a01b0316146112435760405162461bcd60e51b8152600401610230906155da565b806001600160a01b03811661126a5760405162461bcd60e51b81526004016102309061557a565b610a2082612cb6565b61127b611cbf565b7f00000000000000000000000000000000000000000000000000000000000000008114156112de5760405162461bcd60e51b815260206004820152601060248201526f37b7363c9037ba3432b91031b430b4b760811b6044820152606401610230565b6040516370a0823160e01b815233600482015282906001600160a01b038616906370a082319060240160206040518083038186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611357919061505a565b10156113755760405162461bcd60e51b815260040161023090615505565b61138184333085612d5e565b61138e8433858585612a21565b50505050565b600061114261281f565b6113a6612648565b6001600160a01b0316336001600160a01b0316146113d65760405162461bcd60e51b8152600401610230906155da565b816001600160a01b0381166113fd5760405162461bcd60e51b81526004016102309061557a565b6002841061143f5760405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081c985d19481a59608a1b6044820152606401610230565b6040805180820182526001600160a01b038581168252602080830186815260008981526006909252938120925183546001600160a01b031916921691909117825591516001909101557f3e5fec24aa4dc4e5aee2e025e51e1392c72a2500577559fae9665c6d52bd6a32549080527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f954620f4240916114de9190612e8e565b111561138e5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420726174652076616c756560701b6044820152606401610230565b611529611c65565b611531611cbf565b600554604051637c55b7bd60e11b8152600091829182916001600160a01b03169063f8ab6f7a90611568908890889060040161560a565b60006040518083038186803b15801561158057600080fd5b505afa158015611594573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115bc9190810190614fb7565b9250925092508282906115e25760405162461bcd60e51b815260040161023091906153d8565b50600260008681526009602052604090205460ff16600281111561160857611608615910565b141561168d5760008061161a83612ea1565b9150915061164082600860008a815260200190815260200160002080546107c990615880565b6116835760405162461bcd60e51b81526020600482015260146024820152731a5b9d985b1a59081b5bdcc818dbdb9d1c9858dd60621b6044820152606401610230565b610899878261311e565b600160008681526009602052604090205460ff1660028111156116b2576116b2615910565b14156109c45760006116c382612357565b905060005b81518110156108995760008282815181106116e5576116e5615926565b602002602001015190506000816020015160008151811061170857611708615926565b6020026020010151806020019051810190611723919061505a565b90506040518060800160405280604781526020016159f3604791398051906020012081141561179057600080611758846137ab565b9150915061177e82600860008e815260200190815260200160002080546107c990615880565b1561178d5761178d8b8261311e565b50505b5050808061179d906158b5565b9150506116c8565b6000828152600660209081526040808320815180830190925280546001600160a01b031682526001015491810182905282916117f190620f4240906117eb908790613806565b90613812565b9051909590945092505050565b611806612648565b6001600160a01b0316336001600160a01b0316146118365760405162461bcd60e51b8152600401610230906155da565b61120961381e565b611846612648565b6001600160a01b0316336001600160a01b0316146118765760405162461bcd60e51b8152600401610230906155da565b6000838152600860209081526040909120835161189592850190614c72565b506000838152600960205260409020805482919060ff191660018360028111156118c1576118c1615910565b0217905550505050565b6118d3612648565b6001600160a01b0316336001600160a01b0316146119035760405162461bcd60e51b8152600401610230906155da565b610da383838361385f565b6001600160a01b0382166119345760405162461bcd60e51b8152600401610230906155a3565b6000826001600160a01b03166310fe9ae86040518163ffffffff1660e01b815260040160206040518083038186803b15801561196f57600080fd5b505afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190614e2b565b60048054604051639dc6108f60e01b81526001600160a01b0380851693820193909352929350600092911690639dc6108f9060240160206040518083038186803b1580156119f457600080fd5b505afa158015611a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2c9190614e2b565b9050806001600160a01b0316846001600160a01b031614611a855760405162461bcd60e51b815260206004820152601360248201527224b73b30b634b2103b30bab63a103a37b5b2b760691b6044820152606401610230565b60405163c2507ac160e01b8152600481018490526000906001600160a01b0383169063c2507ac19060240160206040518083038186803b158015611ac857600080fd5b505afa158015611adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b00919061505a565b604051630ad58d2f60e01b81527f00000000000000000000000000000000000000000000000000000000000000006004820152602481018690523360448201529091506001600160a01b03831690630ad58d2f90606401600060405180830381600087803b158015611b7157600080fd5b505af1158015611b85573d6000803e3d6000fd5b50505050611b9483338361385f565b5050505050565b611ba3611c65565b611bab611cbf565b6040516370a0823160e01b815233600482015281906001600160a01b038516906370a082319060240160206040518083038186803b158015611bec57600080fd5b505afa158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c24919061505a565b1015611c425760405162461bcd60e51b815260040161023090615505565b611c4e83333084612d5e565b611c5b83610b783361267b565b610da36001600055565b60026000541415611cb85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610230565b6002600055565b60015462010000900460ff16156112095760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610230565b6060611d506040518060e00160405280606081526020016060815260200160008019168152602001600081526020016000815260200160608152602001600081525090565b6000611d63611d5e856138a0565b6138cd565b9050611d8881600081518110611d7b57611d7b615926565b60200260200101516139e2565b92506000611daf82600181518110611da257611da2615926565b60200260200101516138cd565b516001600160401b03811115611dc757611dc761593c565b604051908082528060200260200182016040528015611dfa57816020015b6060815260200190600190039081611de55790505b50905060005b611e1683600181518110611da257611da2615926565b51811015611e7857611e48611e3784600181518110611da257611da2615926565b8281518110611d7b57611d7b615926565b828281518110611e5a57611e5a615926565b60200260200101819052508080611e70906158b5565b915050611e00565b50606060005b8251811015611f14576000611eab848381518110611e9e57611e9e615926565b6020026020010151613a5f565b805160208201209091507f3ad224e3e42a516df08d1fca74990eac30205afb5287a46132a6975ce0b2cede1415611f0157611efe848381518110611ef157611ef1615926565b6020026020010151613b3a565b92505b5080611f0c816158b5565b915050611e7e565b506000611f23611d5e836138a0565b90506040518060e00160405280611f4683600081518110611d7b57611d7b615926565b8152602001611f6183600181518110611d7b57611d7b615926565b8152602001611f7c83600281518110611d7b57611d7b615926565b611f8590615830565b8152602001611fad83600381518110611fa057611fa0615926565b6020026020010151614022565b8152602001611fc883600481518110611fa057611fa0615926565b8152602001611fe383600581518110611d7b57611d7b615926565b8152602001611ffe83600681518110611fa057611fa0615926565b815250945050505050915091565b6000818051906020012083805190602001201490505b92915050565b60408082015160008181526007602052919091205460ff161561207b5760405162461bcd60e51b815260206004820152600b60248201526a1bdc99195c88195e1a5cdd60aa1b6044820152606401610230565b6000818152600760205260409020805460ff19166001179055606082015183146120da5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b6044820152606401610230565b600480546060840151845160405163fb9e6c1360e01b81526000946001600160a01b039094169363fb9e6c139361211593909290910161560a565b60206040518083038186803b15801561212d57600080fd5b505afa158015612141573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121659190614e2b565b90506001600160a01b0381166121b85760405162461bcd60e51b81526020600482015260186024820152771b585c081d1bdad95b881b9bdd081c9959da5cdd195c995960421b6044820152606401610230565b60048054606085015160c0860151604051633bab639f60e21b81526000946001600160a01b039094169363eead8e7c936121f893889391929091016153b7565b60206040518083038186803b15801561221057600080fd5b505afa158015612224573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612248919061505a565b6004805460405163ceec8cb960e01b81526001600160a01b0386811693820193909352929350169063ceec8cb99060240160206040518083038186803b15801561229157600080fd5b505afa1580156122a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c99190614f9c565b1561232f576040516340c10f1960e01b8152306004820152602481018290526001600160a01b038316906340c10f1990604401600060405180830381600087803b15801561231657600080fd5b505af115801561232a573d6000803e3d6000fd5b505050505b611b948285602001516123478760a001516014015190565b84886040015189606001516126b1565b60606000612367611d5e846138a0565b905080516001600160401b038111156123825761238261593c565b6040519080825280602002602001820160405280156123e057816020015b6123cd604051806060016040528060006001600160a01b0316815260200160608152602001606081525090565b8152602001906001900390816123a05790505b50915060005b8151811015612553576000612406838381518110611da257611da2615926565b9050600061242082600181518110611da257611da2615926565b9050600081516001600160401b0381111561243d5761243d61593c565b60405190808252806020026020018201604052801561247057816020015b606081526020019060019003908161245b5790505b50905060005b82518110156124c457612494838281518110611d7b57611d7b615926565b8282815181106124a6576124a6615926565b602002602001018190525080806124bc906158b5565b915050612476565b5060405180606001604052806124f3856000815181106124e6576124e6615926565b6020026020010151614070565b6001600160a01b0316815260200182815260200161251d85600281518110611d7b57611d7b615926565b81525086858151811061253257612532615926565b6020026020010181905250505050808061254b906158b5565b9150506123e6565b5050919050565b606061259f6040518060e00160405280606081526020016060815260200160008019168152602001600081526020016000815260200160608152602001600081525090565b82516125aa9061267b565b9150600083602001516001815181106125c5576125c5615926565b60200260200101518060200190518101906125e09190614e2b565b90506125eb8161267b565b825260408401518051600091612609918101602090810191016150a7565b60c0890152608088019190915260608701919091526040860191909152602085019190915290506126398161267b565b8360a001819052505050915091565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b604051606082811b6bffffffffffffffffffffffff19166020830152906034016040516020818303038152906040529050919050565b60048054604051639dc6108f60e01b81526001600160a01b038981169382019390935260009290911690639dc6108f9060240160206040518083038186803b1580156126fc57600080fd5b505afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127349190614e2b565b90506001600160a01b03811661275c5760405162461bcd60e51b8152600401610230906155a3565b604051638dbdbe6d60e01b815260048101839052602481018590526001600160a01b038681166044830152821690638dbdbe6d90606401600060405180830381600087803b1580156127ad57600080fd5b505af11580156127c1573d6000803e3d6000fd5b50505050846001600160a01b0316876001600160a01b03167f8970038805646cbb7b520ce18a27fe39b9701296f884d4022ad41b2a8dd4e8338886888760405161280e94939291906153eb565b60405180910390a350505050505050565b60006000805160206159ac83398151915261266c565b61283d612648565b6001600160a01b0316336001600160a01b031614610bad5760405162461bcd60e51b815260206004820152602160248201527f4c696768744e6f64653a206f6e6c792041646d696e2063616e207570677261646044820152606560f81b6064820152608401610230565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156128da57610da38361408a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561291357600080fd5b505afa925050508015612943575060408051601f3d908101601f191682019092526129409181019061505a565b60015b6129a65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610230565b6000805160206159ac8339815191528114612a155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610230565b50610da3838383614129565b6004805460405163204f487760e01b81526001600160a01b0388811693820193909352602481018490526000929091169063204f48779060440160006040518083038186803b158015612a7357600080fd5b505afa158015612a87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612aaf9190810190615073565b9050612aca816040518060200160405280600081525061200c565b15612b125760405162461bcd60e51b81526020600482015260186024820152771bdd5d081d1bdad95b881b9bdd081c9959da5cdd195c995960421b6044820152606401610230565b600080612b4188867f00000000000000000000000000000000000000000000000000000000000000008761414e565b6004805460405163ceec8cb960e01b81526001600160a01b038d811693820193909352939550919350169063ceec8cb99060240160206040518083038186803b158015612b8d57600080fd5b505afa158015612ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc59190614f9c565b15612c2557604051630852cd8d60e31b8152600481018390526001600160a01b038916906342966c6890602401600060405180830381600087803b158015612c0c57600080fd5b505af1158015612c20573d6000803e3d6000fd5b505050505b6000612c34898989868961441e565b90507faca0a1067548270e80c1209ec69b5381d80bdaf345ad70cf7f00af9c6ed3f9b4612c608a61267b565b612c698a61267b565b837f0000000000000000000000000000000000000000000000000000000000000000898c888b604051612ca398979695949392919061541a565b60405180910390a1505050505050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f612cdf612648565b604080516001600160a01b03928316815291841660208301520160405180910390a1610bad81614490565b612d1261451c565b6001805462ff0000191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612dc29190615337565b6000604051808303816000865af19150503d8060008114612dff576040519150601f19603f3d011682016040523d82523d6000602084013e612e04565b606091505b5091509150818015612e2e575080511580612e2e575080806020019051810190612e2e9190614f9c565b612e865760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610230565b505050505050565b6000612e9a828461567a565b9392505050565b6060612eab614cf6565b6000612eb9611d5e856138a0565b9050612ed181600081518110611d7b57611d7b615926565b92506000612eeb82600181518110611da257611da2615926565b516001600160401b03811115612f0357612f0361593c565b604051908082528060200260200182016040528015612f3657816020015b6060815260200190600190039081612f215790505b50905060005b612f5283600181518110611da257611da2615926565b51811015612fa357612f73611e3784600181518110611da257611da2615926565b828281518110612f8557612f85615926565b60200260200101819052508080612f9b906158b5565b915050612f3c565b50606060005b8251811015613025576000612fc9848381518110611e9e57611e9e615926565b805160208201209091507f4e87426fdd31a6df84975ed344b2c3fbd45109085f1557dff1156b300f135df814156130125761300f848381518110611ef157611ef1615926565b92505b508061301d816158b5565b915050612fa9565b506000613034611d5e836138a0565b905060405180610100016040528061305883600081518110611d7b57611d7b615926565b815260200161307383600181518110611d7b57611d7b615926565b815260200161308e83600281518110611d7b57611d7b615926565b61309790615830565b81526020016130b283600381518110611fa057611fa0615926565b81526020016130cd83600481518110611fa057611fa0615926565b81526020016130e883600581518110611d7b57611d7b615926565b815260200