[ { "inputs": [ { "internalType": "uint64", "name": "_destinationChainSelector", "type": "uint64" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint256", "name": "_tokenPrice", "type": "uint256" }, { "internalType": "uint256", "name": "_minPurchaseAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_maxPurchaseAmount", "type": "uint256" }, { "internalType": "address payable", "name": "_bankAccount", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "InvalidRouter", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minPurchaseAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxPurchaseAmount", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "isPresaleActive", "type": "bool" } ], "name": "MessageReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "destinationChainSelector", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "ghonAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "coinAmountInUSD", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "referrer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "feeToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "fees", "type": "uint256" } ], "name": "MessageSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "messageId", "type": "bytes32" }, { "internalType": "uint64", "name": "sourceChainSelector", "type": "uint64" }, { "internalType": "bytes", "name": "sender", "type": "bytes" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "components": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct Client.EVMTokenAmount[]", "name": "destTokenAmounts", "type": "tuple[]" } ], "internalType": "struct Client.Any2EVMMessage", "name": "message", "type": "tuple" } ], "name": "ccipReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "claimableTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "destinationChainSelector", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "priceaddress", "type": "address" } ], "name": "getUSDPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "priceaddress", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ghonPurchased", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isPresaleActive", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPurchaseAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minPurchaseAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "priceaddress", "type": "address" }, { "internalType": "address", "name": "referrer", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "purchaseTokens", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "valutaAmount", "type": "uint256" }, { "internalType": "address", "name": "priceaddress", "type": "address" }, { "internalType": "address", "name": "referrer", "type": "address" }, { "internalType": "address", "name": "valutaAddress", "type": "address" } ], "name": "purchaseTokensWithUSDT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "receiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b506040516200235b3803806200235b833981016040819052620000349162000206565b8033604051806040016040528060088152602001672932b1b2b4bb32b960c11b815250604051806040016040528060058152602001641223a427a760d91b815250816003908162000086919062000340565b50600462000095828262000340565b5050506001600160a01b038116620000c857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000d3816200019b565b506001600160a01b03811662000100576040516335fdcccd60e21b815260006004820152602401620000bf565b6001600160a01b03908116608052600580546001600160401b03909916600160a01b02600160a01b600160e01b0319909916989098179097556009805460069690965560079490945560089290925560ff1994861661010002949094166001600160a81b0319909316929092176001179055600b80549284166001600160a01b0319938416179055600d80549190931691161790556200040c565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146200020357600080fd5b50565b600080600080600080600060e0888a0312156200022257600080fd5b87516001600160401b03811681146200023a57600080fd5b60208901519097506200024d81620001ed565b8096505060408801519450606088015193506080880151925060a08801516200027681620001ed565b60c08901519092506200028981620001ed565b8091505092959891949750929550565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002c457607f821691505b602082108103620002e557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033b576000816000526020600020601f850160051c81016020861015620003165750805b601f850160051c820191505b81811015620003375782815560010162000322565b5050505b505050565b81516001600160401b038111156200035c576200035c62000299565b62000374816200036d8454620002af565b84620002eb565b602080601f831160018114620003ac5760008415620003935750858301515b600019600386901b1c1916600185901b17855562000337565b600085815260208120601f198616915b82811015620003dd57888601518255948401946001909101908401620003bc565b5085821015620003fc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611f2c6200042f600039600081816104210152610aaf0152611f2c6000f3fe6080604052600436106101815760003560e01c80638b2f0f4f116100d1578063b0f479a11161008a578063e0c478d011610064578063e0c478d0146104a1578063f2fde38b146104c1578063f7260d3e146104e1578063f952fcad1461050657600080fd5b8063b0f479a114610412578063b47dbf2214610445578063dd62ed3e1461045b57600080fd5b80638b2f0f4f146103585780638da5cb5b146103785780638e990aaf146103aa57806395d89b41146103bd5780639d76ea58146103d2578063a9059cbb146103f257600080fd5b80635f31d92b1161013e578063715018a611610118578063715018a6146102e05780637ff9b596146102f557806384d242261461030b57806385572ffb1461033857600080fd5b80635f31d92b1461027b57806360d938dc1461029057806370a08231146102aa57600080fd5b806306fdde0314610186578063095ea7b3146101b157806318160ddd146101e157806323b872dd14610200578063313ce5671461022057806331db1ffc1461023c575b600080fd5b34801561019257600080fd5b5061019b61051c565b6040516101a891906116ea565b60405180910390f35b3480156101bd57600080fd5b506101d16101cc366004611712565b6105ae565b60405190151581526020016101a8565b3480156101ed57600080fd5b506002545b6040519081526020016101a8565b34801561020c57600080fd5b506101d161021b36600461173e565b6105c8565b34801561022c57600080fd5b50604051601281526020016101a8565b34801561024857600080fd5b5060055461026390600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101a8565b61028e61028936600461173e565b6105ec565b005b34801561029c57600080fd5b506009546101d19060ff1681565b3480156102b657600080fd5b506101f26102c536600461177f565b6001600160a01b031660009081526020819052604090205490565b3480156102ec57600080fd5b5061028e610a90565b34801561030157600080fd5b506101f260065481565b34801561031757600080fd5b506101f261032636600461177f565b600c6020526000908152604090205481565b34801561034457600080fd5b5061028e61035336600461179c565b610aa4565b34801561036457600080fd5b506101f261037336600461177f565b610b03565b34801561038457600080fd5b506005546001600160a01b03165b6040516001600160a01b0390911681526020016101a8565b61028e6103b83660046117d6565b610b86565b3480156103c957600080fd5b5061019b611126565b3480156103de57600080fd5b50600a54610392906001600160a01b031681565b3480156103fe57600080fd5b506101d161040d366004611712565b611135565b34801561041e57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610392565b34801561045157600080fd5b506101f260075481565b34801561046757600080fd5b506101f2610476366004611829565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104ad57600080fd5b506101f26104bc366004611712565b611143565b3480156104cd57600080fd5b5061028e6104dc36600461177f565b611171565b3480156104ed57600080fd5b506009546103929061010090046001600160a01b031681565b34801561051257600080fd5b506101f260085481565b60606003805461052b90611862565b80601f016020809104026020016040519081016040528092919081815260200182805461055790611862565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b5050505050905090565b6000336105bc8185856111ac565b60019150505b92915050565b6000336105d68582856111be565b6105e185858561123c565b506001949350505050565b60095460ff1661063b5760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b60448201526064015b60405180910390fd5b600080610648838661129b565b91509150600754821015801561066057506008548211155b6106ac5760405162461bcd60e51b815260206004820152601e60248201527f507572636861736520616d6f756e74206f757473696465206c696d69747300006044820152606401610632565b6040805160a0810190915260095461010090046001600160a01b031660c08201526000908060e0810160408051601f19818403018152918152908252805133602082810191909152918101869052606081018790526001600160a01b038916608082015291019060a00160408051601f198184030181529190528152602001600060405190808252806020026020018201604052801561077257816020015b604080518082019091526000808252602082015281526020019060019003908161074b5790505b50815260200160006001600160a01b031681526020016107a2604051806020016040528062030d408152506112f8565b9052600d546005546040516320487ded60e01b81529293506000926001600160a01b03909216916320487ded916107ef91600160a01b9091046001600160401b03169086906004016118b2565b602060405180830381865afa15801561080c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610830919061198e565b905061083c8186611335565b333110156108b25760405162461bcd60e51b815260206004820152603760248201527f496e73756666696369656e742062616c616e636520746f2070617920666f722060448201527f6665657320616e6420746f6b656e2070757263686173650000000000000000006064820152608401610632565b600d546005546040516396f4e9f960e01b81526000926001600160a01b0316916396f4e9f99185916108fa91600160a01b9091046001600160401b03169088906004016118b2565b60206040518083038185885af1158015610918573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061093d919061198e565b600554600954604051929350600160a01b9091046001600160401b03169183917f0eea3371ebaa579f17ba752035e9dc0960bd8e5b1f79ceb9d645caa1bfa4ab66916109a49161010090046001600160a01b03169033908a908c908f906000908c906119a7565b60405180910390a3600b546040516000916001600160a01b03169088908381818185875af1925050503d80600081146109f9576040519150601f19603f3d011682016040523d82523d6000602084013e6109fe565b606091505b5050905080610a5b5760405162461bcd60e51b815260206004820152602360248201527f4661696c656420746f2073656e64204d4154494320746f2062616e6b4163636f6044820152621d5b9d60ea1b6064820152608401610632565b336000908152600c6020526040902054610a759086611335565b336000908152600c6020526040902055505050505050505050565b610a98611341565b610aa2600061136e565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aef576040516335fdcccd60e21b8152336004820152602401610632565b610b00610afb82611b9a565b6113c0565b50565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b689190611c60565b505050915050806402540be400610b7f9190611cc6565b9392505050565b60095460ff16610bd05760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b6044820152606401610632565b604051636eb1769f60e11b8152336004820152306024820152819085906001600160a01b0383169063dd62ed3e90604401602060405180830381865afa158015610c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c42919061198e565b1015610c895760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610632565b600080610c96878761129b565b915091506007548210158015610cae57506008548211155b610cfa5760405162461bcd60e51b815260206004820152601e60248201527f507572636861736520616d6f756e74206f757473696465206c696d69747300006044820152606401610632565b6040805160a0810190915260095461010090046001600160a01b031660c08201526000908060e0810160408051601f19818403018152918152908252805133602082810191909152918101869052606081018790526001600160a01b038a16608082015291019060a00160408051601f1981840301815291905281526020016000604051908082528060200260200182016040528015610dc057816020015b6040805180820190915260008082526020820152815260200190600190039081610d995790505b50815260200160006001600160a01b03168152602001610df0604051806020016040528062030d408152506112f8565b9052600d546005546040516320487ded60e01b81529293506000926001600160a01b03909216916320487ded91610e3d91600160a01b9091046001600160401b03169086906004016118b2565b602060405180830381865afa158015610e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7e919061198e565b90506000610e8c8234611cf6565b90503331811115610eef5760405162461bcd60e51b815260206004820152602760248201527f496e73756666696369656e742062616c616e636520746f20707572636861736560448201526620746f6b656e7360c81b6064820152608401610632565b600d546005546040516396f4e9f960e01b81526000926001600160a01b0316916396f4e9f9918691610f3791600160a01b9091046001600160401b03169089906004016118b2565b60206040518083038185885af1158015610f55573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f7a919061198e565b905081341115610fbc57336108fc610f928434611d09565b6040518115909202916000818181858888f19350505050158015610fba573d6000803e3d6000fd5b505b600560149054906101000a90046001600160401b03166001600160401b0316817f0eea3371ebaa579f17ba752035e9dc0960bd8e5b1f79ceb9d645caa1bfa4ab66600960019054906101000a90046001600160a01b031633898b8f60008b60405161102d97969594939291906119a7565b60405180910390a3336000908152600c602052604081208054879290611054908490611cf6565b9091555050600b546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018d9052908816906323b872dd906064016020604051808303816000875af11580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190611d2c565b6111195760405162461bcd60e51b81526020600482015260146024820152731554d115081d1c985b9cd9995c8819985a5b195960621b6044820152606401610632565b5050505050505050505050565b60606004805461052b90611862565b6000336105bc81858561123c565b60008061114f84610b03565b60065490915061115f8483611d47565b6111699190611d5e565b949350505050565b611179611341565b6001600160a01b0381166111a357604051631e4fbdf760e01b815260006004820152602401610632565b610b008161136e565b6111b983838360016114a5565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611236578181101561122757604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610632565b611236848484840360006114a5565b50505050565b6001600160a01b03831661126657604051634b637e8f60e11b815260006004820152602401610632565b6001600160a01b0382166112905760405163ec442f0560e01b815260006004820152602401610632565b6111b983838361157a565b60008060006112a984610b03565b905060006112b96012600a611e64565b6112c38784611d47565b6112cd9190611d5e565b9050600060065487846112e09190611d47565b6112ea9190611d5e565b919791965090945050505050565b60408051915160248084019190915281518084039091018152604490920190526020810180516001600160e01b03166397a657c960e01b17905290565b6000610b7f8284611cf6565b6005546001600160a01b03163314610aa25760405163118cdaa760e01b8152336004820152602401610632565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8051600e55606081015180516000916113e191810160209081019101611e70565b80516006556020810151600755604081015160085560608101516009805460ff1916911515919091179055905081602001516001600160401b031682600001517f97c3d4a9b4439293c74fa85d7ed2481edfb7231ea1076af142c481cc9eeee0a0846040015180602001905181019061145a9190611ed9565b84516020808701516040808901516060808b015183516001600160a01b0398909816885294870195909552858201929092529284015215156080830152519081900360a00190a35050565b6001600160a01b0384166114cf5760405163e602df0560e01b815260006004820152602401610632565b6001600160a01b0383166114f957604051634a1406b160e11b815260006004820152602401610632565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561123657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161156c91815260200190565b60405180910390a350505050565b6001600160a01b0383166115a557806002600082825461159a9190611cf6565b909155506116179050565b6001600160a01b038316600090815260208190526040902054818110156115f85760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610632565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661163357600280548290039055611652565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161169791815260200190565b60405180910390a3505050565b6000815180845260005b818110156116ca576020818501810151868301820152016116ae565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610b7f60208301846116a4565b6001600160a01b0381168114610b0057600080fd5b6000806040838503121561172557600080fd5b8235611730816116fd565b946020939093013593505050565b60008060006060848603121561175357600080fd5b833561175e816116fd565b9250602084013561176e816116fd565b929592945050506040919091013590565b60006020828403121561179157600080fd5b8135610b7f816116fd565b6000602082840312156117ae57600080fd5b81356001600160401b038111156117c457600080fd5b820160a08185031215610b7f57600080fd5b600080600080608085870312156117ec57600080fd5b8435935060208501356117fe816116fd565b9250604085013561180e816116fd565b9150606085013561181e816116fd565b939692955090935050565b6000806040838503121561183c57600080fd5b8235611847816116fd565b91506020830135611857816116fd565b809150509250929050565b600181811c9082168061187657607f821691505b60208210810361189657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b600060406001600160401b03851683526020604081850152845160a060408601526118e060e08601826116a4565b905081860151603f19808784030160608801526118fd83836116a4565b6040890151888203830160808a01528051808352908601945060009350908501905b8084101561195157845180516001600160a01b031683528601518683015293850193600193909301929086019061191f565b5060608901516001600160a01b031660a08901526080890151888203830160c08a0152955061198081876116a4565b9a9950505050505050505050565b6000602082840312156119a057600080fd5b5051919050565b6001600160a01b0397881681529587166020870152604086019490945260608501929092528416608084015290921660a082015260c081019190915260e00190565b604080519081016001600160401b0381118282101715611a0b57611a0b61189c565b60405290565b60405160a081016001600160401b0381118282101715611a0b57611a0b61189c565b604051601f8201601f191681016001600160401b0381118282101715611a5b57611a5b61189c565b604052919050565b80356001600160401b0381168114611a7a57600080fd5b919050565b600082601f830112611a9057600080fd5b81356001600160401b03811115611aa957611aa961189c565b611abc601f8201601f1916602001611a33565b818152846020838601011115611ad157600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112611aff57600080fd5b813560206001600160401b03821115611b1a57611b1a61189c565b611b28818360051b01611a33565b82815260069290921b84018101918181019086841115611b4757600080fd5b8286015b84811015611b8f5760408189031215611b645760008081fd5b611b6c6119e9565b8135611b77816116fd565b81528185013585820152835291830191604001611b4b565b509695505050505050565b600060a08236031215611bac57600080fd5b611bb4611a11565b82358152611bc460208401611a63565b602082015260408301356001600160401b0380821115611be357600080fd5b611bef36838701611a7f565b60408401526060850135915080821115611c0857600080fd5b611c1436838701611a7f565b60608401526080850135915080821115611c2d57600080fd5b50611c3a36828601611aee565b60808301525092915050565b805169ffffffffffffffffffff81168114611a7a57600080fd5b600080600080600060a08688031215611c7857600080fd5b611c8186611c46565b9450602086015193506040860151925060608601519150611ca460808701611c46565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b80820260008212600160ff1b84141615611ce257611ce2611cb0565b81810583148215176105c2576105c2611cb0565b808201808211156105c2576105c2611cb0565b818103818111156105c2576105c2611cb0565b80518015158114611a7a57600080fd5b600060208284031215611d3e57600080fd5b610b7f82611d1c565b80820281158282048414176105c2576105c2611cb0565b600082611d7b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611dbb578160001904821115611da157611da1611cb0565b80851615611dae57918102915b93841c9390800290611d85565b509250929050565b600082611dd2575060016105c2565b81611ddf575060006105c2565b8160018114611df55760028114611dff57611e1b565b60019150506105c2565b60ff841115611e1057611e10611cb0565b50506001821b6105c2565b5060208310610133831016604e8410600b8410161715611e3e575081810a6105c2565b611e488383611d80565b8060001904821115611e5c57611e5c611cb0565b029392505050565b6000610b7f8383611dc3565b600060808284031215611e8257600080fd5b604051608081018181106001600160401b0382111715611ea457611ea461189c565b8060405250825181526020830151602082015260408301516040820152611ecd60608401611d1c565b60608201529392505050565b600060208284031215611eeb57600080fd5b8151610b7f816116fd56fea2646970667358221220a09b081ac894e99f25a7f41c49ad62fa4e9b9ce493e31499d34bda21eef1d8f964736f6c63430008180033000000000000000000000000000000000000000000000000b8159170038f96fb0000000000000000000000004a4f7fbc470cfac5e01c7268d806de85b0e92dd40000000000000000000000000000000000000000000000000004f94ae6af8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3c21bcecceda1000000000000000000000000000000c0fe074a9894e7ce36c946a9298d8ad2cfa32ed5000000000000000000000000d3b06cebf099ce7da4accf578aaebfdbd6e88a93