66 txs
61 calls
constructor
constructor(bytes32 _fraxtalHop, uint256 _numDVNs, address _EXECUTOR, address _DVN, address _TREASURY, address[] _approvedOfts)
functions
approvedOft
viewfunction approvedOft(address) view returns (bool)
DVN
viewfunction DVN() view returns (address)
EXECUTOR
viewfunction EXECUTOR() view returns (address)
executorOptions
viewfunction executorOptions(uint32) view returns (bytes)
fraxtalHop
viewfunction fraxtalHop() view returns (bytes32)
hopFee
viewfunction hopFee() view returns (uint256)
numDVNs
viewfunction numDVNs() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
quote
viewfunction quote(address _oft, uint32 _dstEid, bytes32 _to, uint256 _amountLD) view returns (tuple fee)
quoteHop
viewfunction quoteHop(uint32 _dstEid) view returns (uint256 finalFee)
TREASURY
viewfunction TREASURY() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
pause
nonpayablefunction pause(bool _paused)
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, address recipient, uint256 tokenAmount)
recoverETH
nonpayablefunction recoverETH(address recipient, uint256 tokenAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
sendOFT
payablefunction sendOFT(address _oft, uint32 _dstEid, bytes32 _to, uint256 _amountLD) payable
setExecutorOptions
nonpayablefunction setExecutorOptions(uint32 eid, bytes _options)
setFraxtalHop
nonpayablefunction setFraxtalHop(address _fraxtalHop)
setFraxtalHop
nonpayablefunction setFraxtalHop(bytes32 _fraxtalHop)
setHopFee
nonpayablefunction setHopFee(uint256 _hopFee)
setNumDVNs
nonpayablefunction setNumDVNs(uint256 _numDVNs)
toggleOFTApproval
nonpayablefunction toggleOFTApproval(address _oft, bool _approved)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SendOFT
event SendOFT(address oft, address indexed sender, uint32 indexed dstEid, bytes32 indexed to, uint256 amountLD)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
HopPaused
error HopPaused()
InsufficientFee
error InsufficientFee()
InvalidOFT
error InvalidOFT()
InvalidOptionType
error InvalidOptionType(uint16 optionType)
NotEndpoint
error NotEndpoint()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RefundFailed
error RefundFailed()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAmountSend
error ZeroAmountSend()
creation bytecode
0x60e06040526000600160146101000a81548160ff021916908315150217905550600260035560016004553480156200003657600080fd5b5060405162003dd038038062003dd083398181016040528101906200005c91906200058c565b33600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d25760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c9919062000658565b60405180910390fd5b620000e3816200022b60201b60201c565b5085600281905550846003819055508373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060005b81518110156200021e57600160066000848481518110620001b757620001b662000675565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000191565b50505050505050620006a4565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000261816200026460201b60201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b62000351816200033c565b81146200035d57600080fd5b50565b600081519050620003718162000346565b92915050565b6000819050919050565b6200038c8162000377565b81146200039857600080fd5b50565b600081519050620003ac8162000381565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003df82620003b2565b9050919050565b620003f181620003d2565b8114620003fd57600080fd5b50565b6000815190506200041181620003e6565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000467826200041c565b810181811067ffffffffffffffff821117156200048957620004886200042d565b5b80604052505050565b60006200049e62000328565b9050620004ac82826200045c565b919050565b600067ffffffffffffffff821115620004cf57620004ce6200042d565b5b602082029050602081019050919050565b600080fd5b6000620004fc620004f684620004b1565b62000492565b90508083825260208201905060208402830185811115620005225762000521620004e0565b5b835b818110156200054f57806200053a888262000400565b84526020840193505060208101905062000524565b5050509392505050565b600082601f83011262000571576200057062000417565b5b815162000583848260208601620004e5565b91505092915050565b60008060008060008060c08789031215620005ac57620005ab62000332565b5b6000620005bc89828a0162000360565b9650506020620005cf89828a016200039b565b9550506040620005e289828a0162000400565b9450506060620005f589828a0162000400565b93505060806200060889828a0162000400565b92505060a087015167ffffffffffffffff8111156200062c576200062b62000337565b5b6200063a89828a0162000559565b9150509295509295509295565b6200065281620003d2565b82525050565b60006020820190506200066f600083018462000647565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60805160a05160c0516136e7620006e9600039600081816106c90152610e7a0152600081816106130152610c27015260008181610a6a0152610db801526136e76000f3fe6080604052600436106101855760003560e01c806367fb4738116100d1578063b218b1981161008a578063e30c397811610064578063e30c397814610532578063ec1278d61461055d578063efb7998514610586578063f2fde38b146105c35761018c565b8063b218b1981461049f578063c616f376146104ca578063d393f072146105075761018c565b806367fb4738146103b7578063715018a6146103e057806377958f87146103f757806379ba5097146104205780638153924b146104375780638da5cb5b146104745761018c565b80633e832c901161013e5780635b461c83116101185780635b461c831461030f5780635c975abb146103385780635e8c18da14610363578063630dc7cb1461038c5761018c565b80633e832c901461028d5780635135db46146102a957806359c7c516146102d25761018c565b806302329a2914610191578063104db380146101ba5780631171bda9146101e557806324df604b1461020e5780632d2c5565146102395780633e0c0629146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101b860048036038101906101b39190612267565b6105ec565b005b3480156101c657600080fd5b506101cf610611565b6040516101dc91906122d5565b60405180910390f35b3480156101f157600080fd5b5061020c60048036038101906102079190612352565b610635565b005b34801561021a57600080fd5b506102236106c1565b60405161023091906123b4565b60405180910390f35b34801561024557600080fd5b5061024e6106c7565b60405161025b91906122d5565b60405180910390f35b34801561027057600080fd5b5061028b600480360381019061028691906123cf565b6106eb565b005b6102a760048036038101906102a29190612481565b610760565b005b3480156102b557600080fd5b506102d060048036038101906102cb919061262e565b610974565b005b3480156102de57600080fd5b506102f960048036038101906102f4919061268a565b6109ad565b60405161030691906126c6565b60405180910390f35b34801561031b57600080fd5b506103366004803603810190610331919061268a565b6109cd565b005b34801561034457600080fd5b5061034d6109f2565b60405161035a91906126c6565b60405180910390f35b34801561036f57600080fd5b5061038a600480360381019061038591906126e1565b610a05565b005b34801561039857600080fd5b506103a1610a68565b6040516103ae91906122d5565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d99190612721565b610a8c565b005b3480156103ec57600080fd5b506103f5610a9e565b005b34801561040357600080fd5b5061041e6004803603810190610419919061274e565b610ab2565b005b34801561042c57600080fd5b50610435610ac4565b005b34801561044357600080fd5b5061045e6004803603810190610459919061277b565b610b53565b60405161046b9190612827565b60405180910390f35b34801561048057600080fd5b50610489610bf3565b60405161049691906122d5565b60405180910390f35b3480156104ab57600080fd5b506104b4610c1c565b6040516104c191906123b4565b60405180910390f35b3480156104d657600080fd5b506104f160048036038101906104ec919061277b565b610c22565b6040516104fe91906123b4565b60405180910390f35b34801561051357600080fd5b5061051c610f5d565b6040516105299190612858565b60405180910390f35b34801561053e57600080fd5b50610547610f63565b60405161055491906122d5565b60405180910390f35b34801561056957600080fd5b50610584600480360381019061057f9190612721565b610f8d565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612481565b610f9f565b6040516105ba91906128b1565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e5919061268a565b61116b565b005b6105f4611218565b80600160146101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61063d611218565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016106789291906128cc565b6020604051808303816000875af1158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb919061290a565b50505050565b60045481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106f3611218565b8173ffffffffffffffffffffffffffffffffffffffff168160405161071790612968565b60006040518083038185875af1925050503d8060008114610754576040519150601f19603f3d011682016040523d82523d6000602084013e610759565b606091505b5050505050565b600160149054906101000a900460ff16156107a7576040517f819f993900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661082a576040517f7413e48600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610834848261129f565b905060008103610870576040517f4fdf5da600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ea8473ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e29190612992565b333084611333565b61762f8363ffffffff1603610909576109048483836113b5565b610916565b610915848484846116a6565b5b818363ffffffff163373ffffffffffffffffffffffffffffffffffffffff167fbc9ee36b6ca0bdd5b3840e6d329dd19a2490d880c7ce24d9818aa593adfb35be87856040516109669291906128cc565b60405180910390a450505050565b61097c611218565b80600560008463ffffffff1663ffffffff16815260200190815260200160002090816109a89190612bcb565b505050565b60066020528060005260406000206000915054906101000a900460ff1681565b6109ef8173ffffffffffffffffffffffffffffffffffffffff1660001b610ab2565b50565b600160149054906101000a900460ff1681565b610a0d611218565b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a94611218565b8060048190555050565b610aa6611218565b610ab0600061194d565b565b610aba611218565b8060028190555050565b6000610ace61197e565b90508073ffffffffffffffffffffffffffffffffffffffff16610aef610f63565b73ffffffffffffffffffffffffffffffffffffffff1614610b4757806040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610b3e91906122d5565b60405180910390fd5b610b508161194d565b50565b60056020528060005260406000206000915090508054610b72906129ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9e906129ee565b8015610beb5780601f10610bc057610100808354040283529160200191610beb565b820191906000526020600020905b815481529060010190602001808311610bce57829003601f168201915b505050505081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166330bb3aac846005306040518463ffffffff1660e01b8152600401610c8393929190612d1e565b602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190612d7d565b90506000600560008563ffffffff1663ffffffff1681526020019081526020016000208054610cf2906129ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1e906129ee565b8015610d6b5780601f10610d4057610100808354040283529160200191610d6b565b820191906000526020600020905b815481529060010190602001808311610d4e57829003601f168201915b505050505090506000815103610db4576040518060400160405280601481526020017f01001101000000000000000000000000000493e000000000000000000000000081525090505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663709eb66486306024866040518563ffffffff1660e01b8152600401610e169493929190612de5565b602060405180830381865afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e579190612d7d565b905060008160035485610e6a9190612e60565b610e749190612ea2565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d424422130898560006040518563ffffffff1660e01b8152600401610ed89493929190612ed6565b602060405180830381865afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f199190612d7d565b90508082610f279190612ea2565b9550612710600454612710610f3c9190612ea2565b87610f479190612e60565b610f519190612f4a565b95505050505050919050565b60025481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f95611218565b8060038190555050565b610fa76121bb565b610fb1858361129f565b915061762f8463ffffffff16036110b25760006040518060e0016040528061762f63ffffffff1681526020018581526020018481526020018481526020016040518060200160405280600081525081526020016040518060200160405280600081525081526020016040518060200160405280600081525081525090508573ffffffffffffffffffffffffffffffffffffffff16633b6f743b8260006040518363ffffffff1660e01b815260040161106a92919061308d565b6040805180830381865afa158015611086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110aa9190613112565b915050611163565b60006110c085858586611986565b90508573ffffffffffffffffffffffffffffffffffffffff16633b6f743b8260006040518363ffffffff1660e01b81526004016110fe92919061308d565b6040805180830381865afa15801561111a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113e9190613112565b915061114985610c22565b8260000181815161115a9190612ea2565b91508181525050505b949350505050565b611173611218565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166111d3610bf3565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61122061197e565b73ffffffffffffffffffffffffffffffffffffffff1661123e610bf3565b73ffffffffffffffffffffffffffffffffffffffff161461129d5761126161197e565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161129491906122d5565b60405180910390fd5b565b6000808373ffffffffffffffffffffffffffffffffffffffff1663963efcaa6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113119190612d7d565b90508081846113209190612f4a565b61132a9190612e60565b91505092915050565b6113af848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016113689392919061313f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611a23565b50505050565b61142e8373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114279190612992565b8483611aba565b60006040518060e0016040528061762f63ffffffff16815260200184815260200183815260200183815260200160405180602001604052806000815250815260200160405180602001604052806000815250815260200160405180602001604052806000815250815250905060008473ffffffffffffffffffffffffffffffffffffffff16633b6f743b8360006040518363ffffffff1660e01b81526004016114d892919061308d565b6040805180830381865afa1580156114f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115189190613112565b90508473ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b382600001518484306040518563ffffffff1660e01b815260040161155c93929190613176565b60c06040518083038185885af115801561157a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061159f91906132a9565b505080600001513410156115df576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000015134111561169f5760003373ffffffffffffffffffffffffffffffffffffffff1682600001513461161491906132e9565b60405161162090612968565b60006040518083038185875af1925050503d806000811461165d576040519150601f19603f3d011682016040523d82523d6000602084013e611662565b606091505b505090508061169d576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5050505050565b60006116b484848485611986565b905060008573ffffffffffffffffffffffffffffffffffffffff16633b6f743b8360006040518363ffffffff1660e01b81526004016116f492919061308d565b6040805180830381865afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190613112565b9050600061174186610c22565b82600001516117509190612ea2565b90503481111561178c576040517f025dbdd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118058773ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fe9190612992565b8886611aba565b8673ffffffffffffffffffffffffffffffffffffffff1663c7c7f5b383600001518585306040518563ffffffff1660e01b815260040161184793929190613176565b60c06040518083038185885af1158015611865573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061188a91906132a9565b5050803411156119445760003373ffffffffffffffffffffffffffffffffffffffff1682346118b991906132e9565b6040516118c590612968565b60006040518083038185875af1925050503d8060008114611902576040519150601f19603f3d011682016040523d82523d6000602084013e611907565b606091505b5050905080611942576040517ff0c49d4400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b50505050505050565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561197b81611bc9565b50565b600033905090565b61198e6121d5565b6000611998611c8d565b90506119ab816000620f42406000611cb5565b905061762f826000019063ffffffff16908163ffffffff168152505060025482602001818152505083826040018181525050828260600181815250508082608001819052508486604051602001611a0392919061331d565b6040516020818303038152906040528260a0018190525050949350505050565b6000611a4e828473ffffffffffffffffffffffffffffffffffffffff16611d5290919063ffffffff16565b90506000815114158015611a73575080806020019051810190611a71919061290a565b155b15611ab557826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611aac91906122d5565b60405180910390fd5b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663095ea7b38484604051602401611aeb9291906128cc565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611b398482611d68565b611bc357611bb8848573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3866000604051602401611b71929190613381565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611a23565b611bc28482611a23565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60606003604051602001611ca191906133ee565b604051602081830303815290604052905090565b606084600361ffff16611cd2600083611e2f90919063ffffffff16565b61ffff1614611d2b57611cef600082611e2f90919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401611d229190613418565b60405180910390fd5b6000611d38868686611e96565b9050611d4687600383611f07565b92505050949350505050565b6060611d6083836000611fc4565b905092915050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1684604051611d929190613464565b6000604051808303816000865af19150503d8060008114611dcf576040519150601f19603f3d011682016040523d82523d6000602084013e611dd4565b606091505b5091509150818015611e025750600081511480611e01575080806020019051810190611e00919061290a565b5b5b8015611e25575060008573ffffffffffffffffffffffffffffffffffffffff163b115b9250505092915050565b6000600282611e3e9190612ea2565b83511015611e81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e78906134d8565b60405180910390fd5b60008260028501015190508091505092915050565b60606000826fffffffffffffffffffffffffffffffff1614611edb57838383604051602001611ec79392919061354a565b604051602081830303815290604052611efe565b8383604051602001611eee929190613587565b6040516020818303038152906040525b90509392505050565b606083600361ffff16611f24600083611e2f90919063ffffffff16565b61ffff1614611f7d57611f41600082611e2f90919063ffffffff16565b6040517f3a51740d000000000000000000000000000000000000000000000000000000008152600401611f749190613418565b60405180910390fd5b84600180611f8b8651612091565b611f9591906135b3565b8686604051602001611fab95949392919061362c565b6040516020818303038152906040529150509392505050565b60608147101561200b57306040517fcd78605900000000000000000000000000000000000000000000000000000000815260040161200291906122d5565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516120349190613464565b60006040518083038185875af1925050503d8060008114612071576040519150601f19603f3d011682016040523d82523d6000602084013e612076565b606091505b50915091506120868683836120e7565b925050509392505050565b600061ffff80168211156120df576010826040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526004016120d69291906136be565b60405180910390fd5b819050919050565b6060826120fc576120f782612176565b61216e565b60008251148015612124575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561216657836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161215d91906122d5565b60405180910390fd5b81905061216f565b5b9392505050565b6000815111156121895780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b6040518060e00160405280600063ffffffff1681526020016000801916815260200160008152602001600081526020016060815260200160608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b60008115159050919050565b6122448161222f565b811461224f57600080fd5b50565b6000813590506122618161223b565b92915050565b60006020828403121561227d5761227c612225565b5b600061228b84828501612252565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122bf82612294565b9050919050565b6122cf816122b4565b82525050565b60006020820190506122ea60008301846122c6565b92915050565b6122f9816122b4565b811461230457600080fd5b50565b600081359050612316816122f0565b92915050565b6000819050919050565b61232f8161231c565b811461233a57600080fd5b50565b60008135905061234c81612326565b92915050565b60008060006060848603121561236b5761236a612225565b5b600061237986828701612307565b935050602061238a86828701612307565b925050604061239b8682870161233d565b9150509250925092565b6123ae8161231c565b82525050565b60006020820190506123c960008301846123a5565b92915050565b600080604083850312156123e6576123e5612225565b5b60006123f485828601612307565b92505060206124058582860161233d565b9150509250929050565b600063ffffffff82169050919050565b6124288161240f565b811461243357600080fd5b50565b6000813590506124458161241f565b92915050565b6000819050919050565b61245e8161244b565b811461246957600080fd5b50565b60008135905061247b81612455565b92915050565b6000806000806080858703121561249b5761249a612225565b5b60006124a987828801612307565b94505060206124ba87828801612436565b93505060406124cb8782880161246c565b92505060606124dc8782880161233d565b91505092959194509250565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61253b826124f2565b810181811067ffffffffffffffff8211171561255a57612559612503565b5b80604052505050565b600061256d61221b565b90506125798282612532565b919050565b600067ffffffffffffffff82111561259957612598612503565b5b6125a2826124f2565b9050602081019050919050565b82818337600083830152505050565b60006125d16125cc8461257e565b612563565b9050828152602081018484840111156125ed576125ec6124ed565b5b6125f88482856125af565b509392505050565b600082601f830112612615576126146124e8565b5b81356126258482602086016125be565b91505092915050565b6000806040838503121561264557612644612225565b5b600061265385828601612436565b925050602083013567ffffffffffffffff8111156126745761267361222a565b5b61268085828601612600565b9150509250929050565b6000602082840312156126a05761269f612225565b5b60006126ae84828501612307565b91505092915050565b6126c08161222f565b82525050565b60006020820190506126db60008301846126b7565b92915050565b600080604083850312156126f8576126f7612225565b5b600061270685828601612307565b925050602061271785828601612252565b9150509250929050565b60006020828403121561273757612736612225565b5b60006127458482850161233d565b91505092915050565b60006020828403121561276457612763612225565b5b60006127728482850161246c565b91505092915050565b60006020828403121561279157612790612225565b5b600061279f84828501612436565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127e25780820151818401526020810190506127c7565b60008484015250505050565b60006127f9826127a8565b61280381856127b3565b93506128138185602086016127c4565b61281c816124f2565b840191505092915050565b6000602082019050818103600083015261284181846127ee565b905092915050565b6128528161244b565b82525050565b600060208201905061286d6000830184612849565b92915050565b61287c8161231c565b82525050565b6040820160008201516128986000850182612873565b5060208201516128ab6020850182612873565b50505050565b60006040820190506128c66000830184612882565b92915050565b60006040820190506128e160008301856122c6565b6128ee60208301846123a5565b9392505050565b6000815190506129048161223b565b92915050565b6000602082840312156129205761291f612225565b5b600061292e848285016128f5565b91505092915050565b600081905092915050565b50565b6000612952600083612937565b915061295d82612942565b600082019050919050565b600061297382612945565b9150819050919050565b60008151905061298c816122f0565b92915050565b6000602082840312156129a8576129a7612225565b5b60006129b68482850161297d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612a0657607f821691505b602082108103612a1957612a186129bf565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612a817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612a44565b612a8b8683612a44565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612ac8612ac3612abe8461231c565b612aa3565b61231c565b9050919050565b6000819050919050565b612ae283612aad565b612af6612aee82612acf565b848454612a51565b825550505050565b600090565b612b0b612afe565b612b16818484612ad9565b505050565b5b81811015612b3a57612b2f600082612b03565b600181019050612b1c565b5050565b601f821115612b7f57612b5081612a1f565b612b5984612a34565b81016020851015612b68578190505b612b7c612b7485612a34565b830182612b1b565b50505b505050565b600082821c905092915050565b6000612ba260001984600802612b84565b1980831691505092915050565b6000612bbb8383612b91565b9150826002028217905092915050565b612bd4826127a8565b67ffffffffffffffff811115612bed57612bec612503565b5b612bf782546129ee565b612c02828285612b3e565b600060209050601f831160018114612c355760008415612c23578287015190505b612c2d8582612baf565b865550612c95565b601f198416612c4386612a1f565b60005b82811015612c6b57848901518255600182019150602085019450602081019050612c46565b86831015612c885784890151612c84601f891682612b91565b8355505b6001600288020188555050505b505050505050565b612ca68161240f565b82525050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000612ce5612ce0612cdb84612cac565b612aa3565b612cb6565b9050919050565b612cf581612cca565b82525050565b6000612d086000836127b3565b9150612d1382612942565b600082019050919050565b6000608082019050612d336000830186612c9d565b612d406020830185612cec565b612d4d60408301846122c6565b8181036060830152612d5e81612cfb565b9050949350505050565b600081519050612d7781612326565b92915050565b600060208284031215612d9357612d92612225565b5b6000612da184828501612d68565b91505092915050565b6000819050919050565b6000612dcf612dca612dc584612daa565b612aa3565b61231c565b9050919050565b612ddf81612db4565b82525050565b6000608082019050612dfa6000830187612c9d565b612e0760208301866122c6565b612e146040830185612dd6565b8181036060830152612e2681846127ee565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e6b8261231c565b9150612e768361231c565b9250828202612e848161231c565b91508282048414831517612e9b57612e9a612e31565b5b5092915050565b6000612ead8261231c565b9150612eb88361231c565b9250828201905080821115612ed057612ecf612e31565b5b92915050565b6000608082019050612eeb60008301876122c6565b612ef86020830186612c9d565b612f0560408301856123a5565b612f1260608301846126b7565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f558261231c565b9150612f608361231c565b925082612f7057612f6f612f1b565b5b828204905092915050565b612f848161240f565b82525050565b612f938161244b565b82525050565b600082825260208201905092915050565b6000612fb5826127a8565b612fbf8185612f99565b9350612fcf8185602086016127c4565b612fd8816124f2565b840191505092915050565b600060e083016000830151612ffb6000860182612f7b565b50602083015161300e6020860182612f8a565b5060408301516130216040860182612873565b5060608301516130346060860182612873565b506080830151848203608086015261304c8282612faa565b91505060a083015184820360a08601526130668282612faa565b91505060c083015184820360c08601526130808282612faa565b9150508091505092915050565b600060408201905081810360008301526130a78185612fe3565b90506130b660208301846126b7565b9392505050565b600080fd5b6000604082840312156130d8576130d76130bd565b5b6130e26040612563565b905060006130f284828501612d68565b600083015250602061310684828501612d68565b60208301525092915050565b60006040828403121561312857613127612225565b5b6000613136848285016130c2565b91505092915050565b600060608201905061315460008301866122c6565b61316160208301856122c6565b61316e60408301846123a5565b949350505050565b600060808201905081810360008301526131908186612fe3565b905061319f6020830185612882565b6131ac60608301846122c6565b949350505050565b6000815190506131c381612455565b92915050565b6131d281612cb6565b81146131dd57600080fd5b50565b6000815190506131ef816131c9565b92915050565b60006080828403121561320b5761320a6130bd565b5b6132156060612563565b90506000613225848285016131b4565b6000830152506020613239848285016131e0565b602083015250604061324d848285016130c2565b60408301525092915050565b60006040828403121561326f5761326e6130bd565b5b6132796040612563565b9050600061328984828501612d68565b600083015250602061329d84828501612d68565b60208301525092915050565b60008060c083850312156132c0576132bf612225565b5b60006132ce858286016131f5565b92505060806132df85828601613259565b9150509250929050565b60006132f48261231c565b91506132ff8361231c565b925082820390508181111561331757613316612e31565b5b92915050565b60006040820190506133326000830185612849565b61333f6020830184612c9d565b9392505050565b6000819050919050565b600061336b61336661336184613346565b612aa3565b61231c565b9050919050565b61337b81613350565b82525050565b600060408201905061339660008301856122c6565b6133a36020830184613372565b9392505050565b600061ffff82169050919050565b60008160f01b9050919050565b60006133d0826133b8565b9050919050565b6133e86133e3826133aa565b6133c5565b82525050565b60006133fa82846133d7565b60028201915081905092915050565b613412816133aa565b82525050565b600060208201905061342d6000830184613409565b92915050565b600061343e826127a8565b6134488185612937565b93506134588185602086016127c4565b80840191505092915050565b60006134708284613433565b915081905092915050565b600082825260208201905092915050565b7f746f55696e7431365f6f75744f66426f756e6473000000000000000000000000600082015250565b60006134c260148361347b565b91506134cd8261348c565b602082019050919050565b600060208201905081810360008301526134f1816134b5565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b60008160801b9050919050565b600061352c82613514565b9050919050565b61354461353f826134f8565b613521565b82525050565b600061355682866133d7565b6002820191506135668285613533565b6010820191506135768284613533565b601082019150819050949350505050565b600061359382856133d7565b6002820191506135a38284613533565b6010820191508190509392505050565b60006135be826133aa565b91506135c9836133aa565b9250828201905061ffff8111156135e3576135e2612e31565b5b92915050565b600060ff82169050919050565b60008160f81b9050919050565b600061360e826135f6565b9050919050565b613626613621826135e9565b613603565b82525050565b60006136388288613433565b91506136448287613615565b60018201915061365482866133d7565b6002820191506136648285613615565b6001820191506136748284613433565b91508190509695505050505050565b6000819050919050565b60006136a86136a361369e84613683565b612aa3565b6135e9565b9050919050565b6136b88161368d565b82525050565b60006040820190506136d360008301856136af565b6136e060208301846123a5565b9392505050560000000000000000000000002a2019b30c157db6c1c01306b8025167dbe1803b00000000000000000000000000000000000000000000000000000000000000020000000000000000000000002cca08ae69e0c44b18a57ab2a87644234daebae40000000000000000000000009e059a54699a285714207b43b055483e78faac25000000000000000000000000ccd558d6839e128320bbc932cbba2c890a5518e800000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e5020a6d073a794b6e7f05678707de47986fb0b600000000000000000000000091a3f8a8d7a881fbdfcfecd7a2dc92a46dcfa14e0000000000000000000000007eb8d1e4e2d0c8b9beda7a97b305cf49f3eee8da000000000000000000000000192e0c7cc9b263d93fa6d472de47bbefe1fb12ba0000000000000000000000000ceac003b0d2479bebec9f4b2ebad0a803759bbf000000000000000000000000eedd3a0dddf977462a97c1f0ebb89c3fbe8d084b