551 txs
577 calls
constructor
constructor(address _controller)
functions
bindableMethods
purefunction bindableMethods() pure returns (bytes4[])
feeCollector
viewfunction feeCollector() view returns (address)
FORWARDER_DOMAIN_SEPARATOR
viewfunction FORWARDER_DOMAIN_SEPARATOR() view returns (bytes32)
hashStore
viewfunction hashStore() view returns (address)
isNonceValid
viewfunction isNonceValid(address wallet, uint256 nonce) view returns (bool)
isValidSignature
viewfunction isValidSignature(bytes32 _signHash, bytes _signature) view returns (bytes4 magicValue)
lastNonce
viewfunction lastNonce(address wallet) view returns (uint256)
MAX_REIMBURSTMENT_OVERHEAD
viewfunction MAX_REIMBURSTMENT_OVERHEAD() view returns (uint256)
META_TX_TYPEHASH
viewfunction META_TX_TYPEHASH() view returns (bytes32)
metaTxForwarder
viewfunction metaTxForwarder() view returns (address)
moduleRegistry
viewfunction moduleRegistry() view returns (address)
nonces
viewfunction nonces(address) view returns (uint256)
priceOracle
viewfunction priceOracle() view returns (address)
quotaStore
viewfunction quotaStore() view returns (address)
securityStore
viewfunction securityStore() view returns (address)
TOUCH_GRACE_PERIOD
viewfunction TOUCH_GRACE_PERIOD() view returns (uint256)
validateMetaTx
viewfunction validateMetaTx(address from, address to, uint256 nonce, bytes32 txAwareHash, address gasToken, uint256 gasPrice, uint256 gasLimit, bytes data, bytes signature) view
walletFactory
viewfunction walletFactory() view returns (address)
whitelistStore
viewfunction whitelistStore() view returns (address)
activate
nonpayablefunction activate()
batchCall
nonpayablefunction batchCall(address wallet, address[] to, bytes[] data)
deactivate
nonpayablefunction deactivate()
executeMetaTx
nonpayablefunction executeMetaTx(address from, address to, uint256 nonce, bytes32 txAwareHash, address gasToken, uint256 gasPrice, uint256 gasLimit, bytes data, bytes signature) returns (bool success)
events
Activated
event Activated(address wallet)
Deactivated
event Deactivated(address wallet)
MetaTxExecuted
event MetaTxExecuted(address relayer, address from, uint256 nonce, bytes32 txAwareHash, bool success, uint256 gasUsed)
WalletLocked
event WalletLocked(address indexed wallet, address by, bool locked)
errors
No errors.
creation bytecode
0x6101e06040523480156200001257600080fd5b5060405162003634380380620036348339810160408190526200003591620005fe565b80803081818181806001600160a01b03166080816001600160a01b031660601b8152505050806001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009457600080fd5b505afa158015620000a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cf9190620005fe565b6001600160a01b031660a0816001600160a01b031660601b81525050806001600160a01b031663d51b3a1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012557600080fd5b505afa1580156200013a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001609190620005fe565b6001600160a01b031660c0816001600160a01b031660601b81525050806001600160a01b03166337423d5e6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b657600080fd5b505afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f19190620005fe565b6001600160a01b031660e0816001600160a01b031660601b81525050806001600160a01b031663d9d104846040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024757600080fd5b505afa1580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002829190620005fe565b6001600160a01b0316610100816001600160a01b031660601b81525050806001600160a01b031663cbe45d186040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d957600080fd5b505afa158015620002ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003149190620005fe565b6001600160a01b0316610120816001600160a01b031660601b81525050806001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036b57600080fd5b505afa15801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a69190620005fe565b6001600160a01b0316610140816001600160a01b031660601b81525050806001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003fd57600080fd5b505afa15801562000412573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004389190620005fe565b6001600160a01b0316610160816001600160a01b031660601b81525050806001600160a01b031663c415b95c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048f57600080fd5b505afa158015620004a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ca9190620005fe565b6001600160a01b0316610180816001600160a01b031660601b8152505050505050506200056960405180606001604052806040518060400160405280600f81526020016e466f727761726465724d6f64756c6560881b8152508152602001604051806040016040528060058152602001640312e322e360dc1b8152508152602001306001600160a01b03168152506200058560201b620012fc1760201c565b6101a0525060601b6001600160601b0319166101c05262000669565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f836000015180519060200120846020015180519060200120838660400151604051602001620005e095949392919062000624565b60405160208183030381529060405280519060200120915050919050565b60006020828403121562000610578081fd5b81516200061d8162000650565b9392505050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6001600160a01b03811681146200066657600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a0516101c05160601c612efa6200073a600039508061068d52806108c1525080610c4c528061124a5250806104cd528061191052508061126e52806115e95250806112925250806112da52806118dd5250806104f152508061037452806106f25280610e8c52806112b65280611a655250806111bf52806114d052508061118552806119a45280611b7b5250612efa6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c8063a017b3bf116100e3578063c0fd43b41161008c578063cbe45d1811610066578063cbe45d18146102cb578063d51b3a1b146102d3578063d9d10484146102db5761018d565b8063c0fd43b4146102a8578063c415b95c146102bb578063c5c03699146102c35761018d565b8063afa3363d116100bd578063afa3363d14610278578063b95459e41461028d578063bd11257c146102955761018d565b8063a017b3bf14610260578063a664eb8e14610268578063aec2bf59146102705761018d565b806351b42b0011610145578063840fdc781161011f578063840fdc781461022557806385a4b0de1461022d5780638c4751471461024d5761018d565b806351b42b00146101f557806370c62824146101fd5780637ecebe00146102125761018d565b80632630c12f116101765780632630c12f146101c557806337423d5e146101da57806345000dc8146101e25761018d565b80630f15f4c0146101925780631626ba7e1461019c575b600080fd5b61019a6102e3565b005b6101af6101aa36600461263b565b610332565b6040516101bc91906129f9565b60405180910390f35b6101cd6104cb565b6040516101bc91906127ee565b6101cd6104ef565b61019a6101f03660046124b1565b610513565b61019a61087b565b6102056108bf565b6040516101bc9190612923565b6102056102203660046123a2565b6108e3565b6102056108f5565b61024061023b3660046123da565b6108fc565b6040516101bc9190612918565b61019a61025b366004612570565b610cda565b61020561115f565b6101cd611183565b6102056111a7565b6102806111ad565b6040516101bc91906128b2565b6101cd6111bd565b6102406102a33660046125f0565b6111e1565b6102056102b63660046123a2565b611220565b6101cd611248565b6101cd61126c565b6101cd611290565b6101cd6112b4565b6101cd6112d8565b60006102ed611373565b90506102f88161137d565b7f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf98160405161032791906127ee565b60405180910390a150565b6040517f4a4fbeec000000000000000000000000000000000000000000000000000000008152600090339073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634a4fbeec906103a99084906004016127ee565b60206040518083038186803b1580156103c157600080fd5b505afa1580156103d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f9919061261b565b156104085750600090506104c5565b6104918173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048991906123be565b859085611428565b156104bf57507f1626ba7e0000000000000000000000000000000000000000000000000000000090506104c5565b50600090505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61051e888a84611493565b333014158061057857507f8c47514700000000000000000000000000000000000000000000000000000000610554836000611672565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6105b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612c4c565b60405180910390fd5b861580156105c457508515155b806105d7575086158015906105d7575085155b61060d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612bde565b6060861561062757610622836000600461168e565b610629565b825b905060607ff3c56bcb8317dca4d93b75989c647335ccd94939f2863c4466c7964f0d15dc958b8b8b8b8b8b8b89805190602001206040516020016106759998979695949392919061292c565b604051602081830303815290604052905060006106b27f00000000000000000000000000000000000000000000000000000000000000008361172c565b6040517f4a4fbeec00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634a4fbeec90610727908f906004016127ee565b60206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610777919061261b565b156107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612cba565b6108378c73ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f757600080fd5b505afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f91906123be565b829086611428565b61086d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612aa5565b505050505050505050505050565b6000610885611373565b90506108908161179d565b7f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c008160405161032791906127ee565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006020819052908152604090205481565b62278d0081565b600061090661227f565b6040518060e001604052808e73ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff16815260200189815260200188815250905060005a9050603f61098f896040611843565b8161099657fe5b048110156109d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612c15565b604082015115610a50576109ec826000015183604001516111e1565b610a22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612bde565b604080830151835173ffffffffffffffffffffffffffffffffffffffff166000908152602081905291909120555b816020015173ffffffffffffffffffffffffffffffffffffffff168260c001516000898986600001518760600151604051602001610a919493929190612734565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610ac99161277a565b600060405180830381858888f193505050503d8060008114610b07576040519150601f19603f3d011682016040523d82523d6000602084013e610b0c565b606091505b505080935050610bb9826000015183602001518460400151856060015186608001518760a001518860c001518e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061051392505050565b6000601060e086890101025a8303016101bf016159d80190506000808460a00151118015610bf0575060608401511580610bf05750845b90508015610c7d57608084015161ff149092019173ffffffffffffffffffffffffffffffffffffffff16610c2657613a98820391505b60008460c00151831115610c3e578460c00151610c40565b825b9050610c7b85600001517f000000000000000000000000000000000000000000000000000000000000000087608001518860a0015185611891565b505b8351604080860151606087015191517fe685e02371cebe44a5d2cf72edfeea9b8426d318eb9b70869bc667ec5a7069a193610cbf93339391928b90899061280f565b60405180910390a1505050509b9a5050505050505050505050565b610ce261197e565b15610d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612a6e565b846000610d24611373565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610e1957508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd991906123be565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610e195750610e1782611a25565b155b610e4f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612b81565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f190610ec690859062278d009060040161288c565b600060405180830381600087803b158015610ee057600080fd5b505af1158015610ef4573d6000803e3d6000fd5b5050508584149050610f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612d28565b60005b858110156111555730878783818110610f4a57fe5b9050602002016020810190610f5f91906123a2565b73ffffffffffffffffffffffffffffffffffffffff161415610fad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612c4c565b61102a878783818110610fbc57fe5b9050602002016020810190610fd191906123a2565b89878785818110610fde57fe5b9050602002810190610ff09190612da7565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061149392505050565b600087878381811061103857fe5b905060200201602081019061104d91906123a2565b73ffffffffffffffffffffffffffffffffffffffff1686868481811061106f57fe5b90506020028101906110819190612da7565b6040516110979291908d90600090602001612734565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110cf9161277a565b6000604051808303816000865af19150503d806000811461110c576040519150601f19603f3d011682016040523d82523d6000602084013e611111565b606091505b505090508061114c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612b13565b50600101610f35565b5050505050505050565b7ff3c56bcb8317dca4d93b75989c647335ccd94939f2863c4466c7964f0d15dc9581565b7f000000000000000000000000000000000000000000000000000000000000000081565b61f61881565b60606111b7611aea565b90505b90565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081205482118015611219575043608083901c11155b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f836000015180519060200120846020015180519060200120838660400151604051602001611355959493929190612989565b60405160208183030381529060405280519060200120915050919050565b60006111b7611b55565b8060606113886111ad565b905060005b8151811015611422578273ffffffffffffffffffffffffffffffffffffffff1663b149206e8383815181106113be57fe5b6020026020010151306040518363ffffffff1660e01b81526004016113e4929190612a26565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50506001909201915061138d9050565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff831661144d57506000611219565b61146c8373ffffffffffffffffffffffffffffffffffffffff16611c12565b6114805761147b848484611c49565b61148b565b61148b848484611d83565b949350505050565b6040517f1c5ebe2f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631c5ebe2f906115059086906004016127ee565b60206040518083038186803b15801561151d57600080fd5b505afa158015611531573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611555919061261b565b806115e157508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156115e157507f1ed86f19000000000000000000000000000000000000000000000000000000006115bd826000611672565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b8061163757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b61166d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612b4a565b505050565b6000816004018351101561168557600080fd5b50016020015190565b6060818301845110156116a057600080fd5b6060821580156116bb57604051915060208201604052611723565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156116f45780518352602092830192016116dc565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60006040518060400160405280600281526020017f190100000000000000000000000000000000000000000000000000000000000081525083838051906020012060405160200161177f93929190612796565b60405160208183030381529060405280519060200120905092915050565b8060606117a86111ad565b905060005b8151811015611422578273ffffffffffffffffffffffffffffffffffffffff1663b149206e8383815181106117de57fe5b602002602001015160006040518363ffffffff1660e01b8152600401611805929190612a26565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b5050600190920191506117ad9050565b81810282158061185b57508183828161185857fe5b04145b6104c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612cf1565b600061189d8284611843565b6040517f71689b2b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906371689b2b90611938908990889087907f000000000000000000000000000000000000000000000000000000000000000090600401612854565b600060405180830381600087803b15801561195257600080fd5b505af1158015611966573d6000803e3d6000fd5b5050505061197686858784611edf565b505050505050565b6000603836108015906119c657503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b15611a1d57611a1660206000369050036000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506120319050565b90506111ba565b5060006111ba565b6040517f4a4fbeec00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634a4fbeec90611a9a9085906004016127ee565b60206040518083038186803b158015611ab257600080fd5b505afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c5919061261b565b60408051600180825281830190925260609160208083019080368337019050509050631626ba7e60e01b81600081518110611b2157fe5b7fffffffff000000000000000000000000000000000000000000000000000000009092166020928302919091019091015290565b600060383610801590611b9d57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b15611c0b57611a16611bf060346000369050036000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506120449050565b73ffffffffffffffffffffffffffffffffffffffff166111ba565b50336111ba565b6000813f801580159061121957507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b600073ffffffffffffffffffffffffffffffffffffffff8316611c6e57506000611219565b8151600090611c7e906001612070565b90506000611c8c84836120b2565b60ff166004811115611c9a57fe5b82855290506002816004811115611cad57fe5b1415611cf257611cbd86856120ce565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16149250611d76565b6003816004811115611d0057fe5b1415611d7157600086604051602001611d1991906127bd565b604051602081830303815290604052805190602001209050611d3b81866120ce565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614935050611d76565b600092505b5060010182529392505050565b60006060631626ba7e60e01b8584604051602401611da29291906129c2565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600060608573ffffffffffffffffffffffffffffffffffffffff1683604051611e2a919061277a565b600060405180830381855afa9150503d8060008114611e65576040519150601f19603f3d011682016040523d82523d6000602084013e611e6a565b606091505b5091509150818015611e7d575080516020145b8015611ed457507f1626ba7e00000000000000000000000000000000000000000000000000000000611eb0826000611672565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611f1b57611f15848383604051806020016040528060008152506121a6565b50611422565b606063a9059cbb60e01b8383604051602401611f3892919061288c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506060611fc686866000856121a6565b905060008151600014611fec5781806020019051810190611fe7919061261b565b611fef565b60015b905080612028576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612c83565b50505050505050565b6000816020018351101561168557600080fd5b6000816014018351101561205757600080fd5b5001602001516c01000000000000000000000000900490565b6000828211156120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ae90612adc565b50900390565b600081600101835110156120c557600080fd5b50016001015190565b600081516041146120e1575060006104c5565b60208201516040830151604184015160ff167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082111561212757600093505050506104c5565b8060ff16601b148061213c57508060ff16601c145b1561219a576001868285856040516000815260200160405260405161216494939291906129db565b6020604051602081039080840390855afa158015612186573d6000803e3d6000fd5b5050506020604051035193505050506104c5565b600093505050506104c5565b6040517f7122b74c00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff861690637122b74c9061220290600190889088908890600401612d5f565b600060405180830381600087803b15801561221c57600080fd5b505af1158015612230573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526122769190810190612680565b95945050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b80356104c581612e9f565b60008083601f8401126122d7578182fd5b50813567ffffffffffffffff8111156122ee578182fd5b602083019150836020808302850101111561230857600080fd5b9250929050565b60008083601f840112612320578182fd5b50813567ffffffffffffffff811115612337578182fd5b60208301915083602082850101111561230857600080fd5b600082601f83011261235f578081fd5b813561237261236d82612e31565b612e0a565b915080825283602082850101111561238957600080fd5b8060208401602084013760009082016020015292915050565b6000602082840312156123b3578081fd5b813561121981612e9f565b6000602082840312156123cf578081fd5b815161121981612e9f565b60008060008060008060008060008060006101208c8e0312156123fb578687fd5b6124058c35612e9f565b8b359a5061241660208d0135612e9f565b60208c0135995060408c0135985060608c013597506124388d60808e016122bb565b965060a08c0135955060c08c0135945067ffffffffffffffff8060e08e01351115612461578485fd5b6124718e60e08f01358f0161230f565b90955093506101008d0135811015612487578283fd5b506124998d6101008e01358e0161230f565b81935080925050509295989b509295989b9093969950565b60008060008060008060008060006101208a8c0312156124cf578485fd5b89356124da81612e9f565b985060208a01356124ea81612e9f565b975060408a0135965060608a013595506125078b60808c016122bb565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff80821115612531578384fd5b61253d8d838e0161234f565b93506101008c0135915080821115612553578283fd5b506125608c828d0161234f565b9150509295985092959850929598565b600080600080600060608688031215612587578081fd5b853561259281612e9f565b9450602086013567ffffffffffffffff808211156125ae578283fd5b6125ba89838a016122c6565b909650945060408801359150808211156125d2578283fd5b506125df888289016122c6565b969995985093965092949392505050565b60008060408385031215612602578182fd5b823561260d81612e9f565b946020939093013593505050565b60006020828403121561262c578081fd5b81518015158114611219578182fd5b6000806040838503121561264d578182fd5b82359150602083013567ffffffffffffffff81111561266a578182fd5b6126768582860161234f565b9150509250929050565b600060208284031215612691578081fd5b815167ffffffffffffffff8111156126a7578182fd5b8201601f810184136126b7578182fd5b80516126c561236d82612e31565b8181528560208385010111156126d9578384fd5b612276826020830160208601612e73565b60008151808452612702816020860160208601612e73565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000848683375060609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016919092019081526014810191909152603401919050565b6000825161278c818460208701612e73565b9190910192915050565b600084516127a8818460208901612e73565b91909101928352506020820152604001919050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9687168152949095166020850152604084019290925260608301521515608082015260a081019190915260c00190565b73ffffffffffffffffffffffffffffffffffffffff948516815292841660208401526040830191909152909116606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561290c5783517fffffffff0000000000000000000000000000000000000000000000000000000016835292840192918401916001016128ce565b50909695505050505050565b901515815260200190565b90815260200190565b98895273ffffffffffffffffffffffffffffffffffffffff97881660208a015295871660408901526060880194909452608087019290925290931660a085015260c084019290925260e08301919091526101008201526101200190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60008382526040602083015261148b60408301846126ea565b93845260ff9290921660208401526040830152606082015260800190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60208082526015908201527f494e56414c49445f54585f41574152455f484153480000000000000000000000604082015260600190565b60208082526011908201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604082015260600190565b6020808252600d908201527f5355425f554e444552464c4f5700000000000000000000000000000000000000604082015260600190565b60208082526013908201527f424154434845445f43414c4c5f4641494c454400000000000000000000000000604082015260600190565b6020808252601d908201527f494e56414c49445f44455354494e4154494f4e5f4f525f4d4554484f44000000604082015260600190565b60208082526029908201527f4e4f545f46524f4d5f57414c4c45545f4f525f4f574e45525f4f525f57414c4c60408201527f45545f4c4f434b45440000000000000000000000000000000000000000000000606082015260800190565b6020808252600d908201527f494e56414c49445f4e4f4e434500000000000000000000000000000000000000604082015260600190565b60208082526019908201527f4f50455241544f525f494e53554646494349454e545f47415300000000000000604082015260600190565b6020808252600e908201527f494e56414c49445f544152474554000000000000000000000000000000000000604082015260600190565b60208082526015908201527f45524332305f5452414e534645525f4641494c45440000000000000000000000604082015260600190565b6020808252600d908201527f57414c4c45545f4c4f434b454400000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f4d554c5f4f564552464c4f570000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f494e56414c49445f444154410000000000000000000000000000000000000000604082015260600190565b600060ff8616825273ffffffffffffffffffffffffffffffffffffffff8516602083015283604083015260806060830152612d9d60808301846126ea565b9695505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ddb578283fd5b83018035915067ffffffffffffffff821115612df5578283fd5b60200191503681900382131561230857600080fd5b60405181810167ffffffffffffffff81118282101715612e2957600080fd5b604052919050565b600067ffffffffffffffff821115612e47578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612e8e578181015183820152602001612e76565b838111156114225750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612ec157600080fd5b5056fea26469706673582212209b598f470371d5cad3e2e5137947b13a97d8f3d5d252a6498bf33044cebb822c64736f6c63430007000033000000000000000000000000b39e09279d4035c0f92307741d9dd8ed66e74de0