0 txs
1 call
constructor
constructor()
functions
collectedFees
viewfunction collectedFees(address) view returns (uint256)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
facilitators
viewfunction facilitators(address) view returns (bool)
FEE_CHANGE_DELAY
viewfunction FEE_CHANGE_DELAY() view returns (uint256)
feeChangeTimestamp
viewfunction feeChangeTimestamp() view returns (uint256)
feePercentage
viewfunction feePercentage() view returns (uint256)
getNonce
viewfunction getNonce(address user, address token) view returns (uint256)
getPendingFeeChange
viewfunction getPendingFeeChange() view returns (uint256 pending, uint256 activationTime)
isFacilitator
viewfunction isFacilitator(address facilitator) view returns (bool)
MAX_FEE
viewfunction MAX_FEE() view returns (uint256)
nonces
viewfunction nonces(address, address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingFeePercentage
viewfunction pendingFeePercentage() view returns (uint256)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addFacilitator
nonpayablefunction addFacilitator(address facilitator)
executeFeeChange
nonpayablefunction executeFeeChange()
pause
nonpayablefunction pause()
proposeFeeChange
nonpayablefunction proposeFeeChange(uint256 newFeePercentage)
removeFacilitator
nonpayablefunction removeFacilitator(address facilitator)
renounceOwnership
nonpayablefunction renounceOwnership()
settleERC20
nonpayablefunction settleERC20(address token, address from, address to, uint256 value, uint256 nonce, uint256 validAfter, uint256 validBefore, uint8 v, bytes32 r, bytes32 s)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFees
nonpayablefunction withdrawFees(address token, address recipient)
events
ERC20Settlement
event ERC20Settlement(address indexed token, address indexed from, address indexed to, uint256 value, uint256 nonce, uint256 fee, uint256 timestamp, address facilitator)
FacilitatorAdded
event FacilitatorAdded(address indexed facilitator)
FacilitatorRemoved
event FacilitatorRemoved(address indexed facilitator)
FeeChangeProposed
event FeeChangeProposed(uint256 newFee, uint256 activationTime)
FeePercentageUpdated
event FeePercentageUpdated(uint256 oldFee, uint256 newFee)
FeesWithdrawn
event FeesWithdrawn(address indexed token, address indexed recipient, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AuthorizationExpired
error AuthorizationExpired()
AuthorizationNotYetValid
error AuthorizationNotYetValid()
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
FeeChangeTooEarly
error FeeChangeTooEarly()
InvalidAddress
error InvalidAddress()
InvalidFeePercentage
error InvalidFeePercentage()
InvalidSignature
error InvalidSignature()
NonceAlreadyUsed
error NonceAlreadyUsed()
NoPendingFeeChange
error NoPendingFeeChange()
NotFacilitator
error NotFacilitator()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAmount
error ZeroAmount()
creation bytecode
0x60c060405234801562000010575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000085575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200007c91906200034f565b60405180910390fd5b62000096816200017c60201b60201c565b5060016002819055505f60035f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f6006819055504660a081815250506200012c620001b460201b60201c565b608081815250503373ffffffffffffffffffffffffffffffffffffffff167fa6b5e4d0184997f6e0eafb1493fec2637945fb760b69b07ecd6236e10c74d01d60405160405180910390a2620003f9565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055620001b1816200024b60201b60201c565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f276e39b5653f30a9c053bd4f74a69906f1a563ad0efbc858b2c9c20dbcc091607fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001620002309594939291906200039e565b60405160208183030381529060405280519060200120905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000337826200030c565b9050919050565b62000349816200032b565b82525050565b5f602082019050620003645f8301846200033e565b92915050565b5f819050919050565b6200037e816200036a565b82525050565b5f819050919050565b620003988162000384565b82525050565b5f60a082019050620003b35f83018862000373565b620003c2602083018762000373565b620003d1604083018662000373565b620003e060608301856200038d565b620003ef60808301846200033e565b9695505050505050565b60805160a05161247d6200041b5f395f61066601525f61068d015261247d5ff3fe608060405234801561000f575f80fd5b506004361061018c575f3560e01c80638da5cb5b116100dc578063d828435d11610095578063e38e6ea81161006f578063e38e6ea814610427578063f255527814610445578063f2fde38b14610461578063f79c6ea41461047d5761018c565b8063d828435d146103bb578063dc3245be146103eb578063e30c3978146104095761018c565b80638da5cb5b146102f75780639333fbda14610315578063a001ecdd14610345578063a11812ba14610363578063bc063e1a1461037f578063be8a361f1461039d5761018c565b80634b719ab6116101495780635c975abb116101235780635c975abb146102bb578063715018a6146102d957806379ba5097146102e35780638456cb59146102ed5761018c565b80634b719ab6146102535780634d1158d1146102835780634fe0c4511461029f5761018c565b80631cead9a71461019057806331523f9b146101c057806333460540146101dc5780633644e5151461020c5780633d42fe541461022a5780633f4ba83a14610249575b5f80fd5b6101aa60048036038101906101a59190611b76565b610487565b6040516101b79190611bb9565b60405180910390f35b6101da60048036038101906101d59190611c65565b61049c565b005b6101f660048036038101906101f19190611b76565b610611565b6040516102039190611d58565b60405180910390f35b610214610663565b6040516102219190611d80565b60405180910390f35b6102326106c1565b604051610240929190611d99565b60405180910390f35b6102516106d1565b005b61026d60048036038101906102689190611b76565b6106e3565b60405161027a9190611d58565b60405180910390f35b61029d60048036038101906102989190611b76565b610700565b005b6102b960048036038101906102b49190611dc0565b610808565b005b6102c36108a6565b6040516102d09190611d58565b60405180910390f35b6102e16108bb565b005b6102eb6108ce565b005b6102f561095c565b005b6102ff61096e565b60405161030c9190611dfa565b60405180910390f35b61032f600480360381019061032a9190611e13565b610995565b60405161033c9190611bb9565b60405180910390f35b61034d6109b5565b60405161035a9190611bb9565b60405180910390f35b61037d60048036038101906103789190611b76565b6109bb565b005b610387610a5d565b6040516103949190611bb9565b60405180910390f35b6103a5610a63565b6040516103b29190611bb9565b60405180910390f35b6103d560048036038101906103d09190611e13565b610a6a565b6040516103e29190611bb9565b60405180910390f35b6103f3610aec565b6040516104009190611bb9565b60405180910390f35b610411610af2565b60405161041e9190611dfa565b60405180910390f35b61042f610b1a565b60405161043c9190611bb9565b60405180910390f35b61045f600480360381019061045a9190611e13565b610b20565b005b61047b60048036038101906104769190611b76565b610cc3565b005b610485610d6f565b005b6009602052805f5260405f205f915090505481565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661051c576040517fbd37327f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610524610e49565b61052c610e96565b5f4290505f8803610569576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16036105ce576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105dc86868c8e8b86610ee0565b6105ee8b8b8b8b8b8b8b8b8b8b61109a565b6105fc8b8b8b8b8b866111b3565b506106056113db565b50505050505050505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000046036106b3577f000000000000000000000000000000000000000000000000000000000000000090506106be565b6106bb6113e5565b90505b90565b5f80600754600854915091509091565b6106d961147a565b6106e1611501565b565b6004602052805f5260405f205f915054906101000a900460ff1681565b61070861147a565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361076d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fa6b5e4d0184997f6e0eafb1493fec2637945fb760b69b07ecd6236e10c74d01d60405160405180910390a250565b61081061147a565b6101f481111561084c576040517f721dbfea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060078190555062015180426108629190611e7e565b6008819055507fa7f5d2ab44bf05730cdc4bbcac853dcb248b08dde217076250444c1b670600618160085460405161089b929190611d99565b60405180910390a150565b5f60035f9054906101000a900460ff16905090565b6108c361147a565b6108cc5f611562565b565b5f6108d7611592565b90508073ffffffffffffffffffffffffffffffffffffffff166108f8610af2565b73ffffffffffffffffffffffffffffffffffffffff161461095057806040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016109479190611dfa565b60405180910390fd5b61095981611562565b50565b61096461147a565b61096c611599565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6005602052815f5260405f20602052805f5260405f205f91509150505481565b60065481565b6109c361147a565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fa8fe5b89f35f2ebd6f3f95a7ef215f4bd89179e10c101073ae76cffad14734cf60405160405180910390a250565b6101f481565b6201518081565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b610b2861147a565b610b30610e49565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b95576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103610be35750610cb7565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610c5082828573ffffffffffffffffffffffffffffffffffffffff166115fb9092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f5e110f8bc8a20b65dcc87f224bdf1cc039346e267118bae2739847f07321ffa883604051610cad9190611bb9565b60405180910390a3505b610cbf6113db565b5050565b610ccb61147a565b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16610d2a61096e565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610d7761147a565b5f60085403610db2576040517f62e6a30100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600854421015610dee576040517f7903715300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065490506007546006819055505f6007819055505f6008819055507fb27c12a91635e11c22bffa7bd8e0a8735da52b94aaefd7f249776c7590ba789481600654604051610e3e929190611d99565b60405180910390a150565b6002805403610e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8490611f0b565b60405180910390fd5b60028081905550565b610e9e6108a6565b15610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed590611f73565b60405180910390fd5b565b85811015610f1a576040517fdf8e437200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84811115610f54576040517f0f05f5bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611005576040517f1fb09b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548092919061108d90611f91565b9190505550505050505050565b5f7fc7bf020550e52cb0e18cf51eb8f69e350b9009c8aa383fa02ea332638e5df4a48b8b8b8b8b8b8b6040516020016110da989796959493929190611fd8565b6040516020818303038152906040528051906020012090505f6110fb610663565b8260405160200161110d9291906120c8565b6040516020818303038152906040528051906020012090505f61113d8686868561167a909392919063ffffffff16565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111a4576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050505050505050565b5f60065403611272576111e98585858973ffffffffffffffffffffffffffffffffffffffff166116a8909392919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167ff606286dbcfcd175b8b22c61b8e1da14bf5b5776d73aa1f32d6f328599af957b86865f8733604051611265959493929190612140565b60405180910390a46113d3565b5f612710600654856112849190612191565b61128e91906121ff565b90505f818561129d919061222f565b90506112cc8787838b73ffffffffffffffffffffffffffffffffffffffff166116a8909392919063ffffffff16565b6112f98730848b73ffffffffffffffffffffffffffffffffffffffff166116a8909392919063ffffffff16565b8160095f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113459190611e7e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167ff606286dbcfcd175b8b22c61b8e1da14bf5b5776d73aa1f32d6f328599af957b88888789336040516113c8959493929190612262565b60405180910390a450505b505050505050565b6001600281905550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f276e39b5653f30a9c053bd4f74a69906f1a563ad0efbc858b2c9c20dbcc091607fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161145f9594939291906122b3565b60405160208183030381529060405280519060200120905090565b611482611592565b73ffffffffffffffffffffffffffffffffffffffff166114a061096e565b73ffffffffffffffffffffffffffffffffffffffff16146114ff576114c3611592565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016114f69190611dfa565b60405180910390fd5b565b61150961172a565b5f60035f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61154b611592565b6040516115589190611dfa565b60405180910390a1565b60015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561158f81611773565b50565b5f33905090565b6115a1610e96565b600160035f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115e4611592565b6040516115f19190611dfa565b60405180910390a1565b611675838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161162e929190612304565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611834565b505050565b5f805f8061168a888888886118cf565b92509250925061169a82826119b6565b829350505050949350505050565b611724848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016116dd9392919061232b565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611834565b50505050565b6117326108a6565b611771576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611768906123aa565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f8060205f8451602086015f885af180611853576040513d5f823e3d81fd5b3d92505f519150505f821461186c576001811415611887565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b156118c957836040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016118c09190611dfa565b60405180910390fd5b50505050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c111561190b575f6003859250925092506119ac565b5f6001888888886040515f815260200160405260405161192e94939291906123d7565b6020604051602081039080840390855afa15801561194e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361199f575f60015f801b935093509350506119ac565b805f805f1b935093509350505b9450945094915050565b5f60038111156119c9576119c861241a565b5b8260038111156119dc576119db61241a565b5b0315611b1457600160038111156119f6576119f561241a565b5b826003811115611a0957611a0861241a565b5b03611a40576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115611a5457611a5361241a565b5b826003811115611a6757611a6661241a565b5b03611aab57805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401611aa29190611bb9565b60405180910390fd5b600380811115611abe57611abd61241a565b5b826003811115611ad157611ad061241a565b5b03611b1357806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611b0a9190611d80565b60405180910390fd5b5b5050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4582611b1c565b9050919050565b611b5581611b3b565b8114611b5f575f80fd5b50565b5f81359050611b7081611b4c565b92915050565b5f60208284031215611b8b57611b8a611b18565b5b5f611b9884828501611b62565b91505092915050565b5f819050919050565b611bb381611ba1565b82525050565b5f602082019050611bcc5f830184611baa565b92915050565b611bdb81611ba1565b8114611be5575f80fd5b50565b5f81359050611bf681611bd2565b92915050565b5f60ff82169050919050565b611c1181611bfc565b8114611c1b575f80fd5b50565b5f81359050611c2c81611c08565b92915050565b5f819050919050565b611c4481611c32565b8114611c4e575f80fd5b50565b5f81359050611c5f81611c3b565b92915050565b5f805f805f805f805f806101408b8d031215611c8457611c83611b18565b5b5f611c918d828e01611b62565b9a50506020611ca28d828e01611b62565b9950506040611cb38d828e01611b62565b9850506060611cc48d828e01611be8565b9750506080611cd58d828e01611be8565b96505060a0611ce68d828e01611be8565b95505060c0611cf78d828e01611be8565b94505060e0611d088d828e01611c1e565b935050610100611d1a8d828e01611c51565b925050610120611d2c8d828e01611c51565b9150509295989b9194979a5092959850565b5f8115159050919050565b611d5281611d3e565b82525050565b5f602082019050611d6b5f830184611d49565b92915050565b611d7a81611c32565b82525050565b5f602082019050611d935f830184611d71565b92915050565b5f604082019050611dac5f830185611baa565b611db96020830184611baa565b9392505050565b5f60208284031215611dd557611dd4611b18565b5b5f611de284828501611be8565b91505092915050565b611df481611b3b565b82525050565b5f602082019050611e0d5f830184611deb565b92915050565b5f8060408385031215611e2957611e28611b18565b5b5f611e3685828601611b62565b9250506020611e4785828601611b62565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e8882611ba1565b9150611e9383611ba1565b9250828201905080821115611eab57611eaa611e51565b5b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f611ef5601f83611eb1565b9150611f0082611ec1565b602082019050919050565b5f6020820190508181035f830152611f2281611ee9565b9050919050565b7f5061757361626c653a20706175736564000000000000000000000000000000005f82015250565b5f611f5d601083611eb1565b9150611f6882611f29565b602082019050919050565b5f6020820190508181035f830152611f8a81611f51565b9050919050565b5f611f9b82611ba1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fcd57611fcc611e51565b5b600182019050919050565b5f61010082019050611fec5f83018b611d71565b611ff9602083018a611deb565b6120066040830189611deb565b6120136060830188611deb565b6120206080830187611baa565b61202d60a0830186611baa565b61203a60c0830185611baa565b61204760e0830184611baa565b9998505050505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f612092600283612054565b915061209d8261205e565b600282019050919050565b5f819050919050565b6120c26120bd82611c32565b6120a8565b82525050565b5f6120d282612086565b91506120de82856120b1565b6020820191506120ee82846120b1565b6020820191508190509392505050565b5f819050919050565b5f819050919050565b5f61212a612125612120846120fe565b612107565b611ba1565b9050919050565b61213a81612110565b82525050565b5f60a0820190506121535f830188611baa565b6121606020830187611baa565b61216d6040830186612131565b61217a6060830185611baa565b6121876080830184611deb565b9695505050505050565b5f61219b82611ba1565b91506121a683611ba1565b92508282026121b481611ba1565b915082820484148315176121cb576121ca611e51565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61220982611ba1565b915061221483611ba1565b925082612224576122236121d2565b5b828204905092915050565b5f61223982611ba1565b915061224483611ba1565b925082820390508181111561225c5761225b611e51565b5b92915050565b5f60a0820190506122755f830188611baa565b6122826020830187611baa565b61228f6040830186611baa565b61229c6060830185611baa565b6122a96080830184611deb565b9695505050505050565b5f60a0820190506122c65f830188611d71565b6122d36020830187611d71565b6122e06040830186611d71565b6122ed6060830185611baa565b6122fa6080830184611deb565b9695505050505050565b5f6040820190506123175f830185611deb565b6123246020830184611baa565b9392505050565b5f60608201905061233e5f830186611deb565b61234b6020830185611deb565b6123586040830184611baa565b949350505050565b7f5061757361626c653a206e6f74207061757365640000000000000000000000005f82015250565b5f612394601483611eb1565b915061239f82612360565b602082019050919050565b5f6020820190508181035f8301526123c181612388565b9050919050565b6123d181611bfc565b82525050565b5f6080820190506123ea5f830187611d71565b6123f760208301866123c8565b6124046040830185611d71565b6124116060830184611d71565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220261b2db4a7c7b76390a8c197b5f70d6b55582e1984e9762fa000d8d6a05f2fca64736f6c63430008180033