Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": false, "internalType": "address", "name": "signer", "type": "address" } ], "name": "ChequeSignerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "hardLockUntil", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "softLockUntil", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "allowedHops", "type": "uint64" } ], "name": "LockApplied", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "LockDecreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "LockRemoved", "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" }, { "stateMutability": "payable", "type": "fallback" }, { "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": "amount", "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint64", "name": "hardLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "softLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "allowedHops", "type": "uint64" }, { "internalType": "bytes32[2]", "name": "signature", "type": "bytes32[2]" } ], "name": "encashCheque", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "lockOf", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" }, { "internalType": "uint256", "name": "unlockPerSec", "type": "uint256" }, { "internalType": "uint64", "name": "hardLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "softLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "lastUnlock", "type": "uint64" }, { "internalType": "uint64", "name": "allowedHops", "type": "uint64" } ], "internalType": "struct QANX.Lock", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "lockedBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newChequeSigner", "type": "address" } ], "name": "setChequeSigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint64", "name": "hardLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "softLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "allowedHops", "type": "uint64" } ], "name": "transferFromLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint64", "name": "hardLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "softLockUntil", "type": "uint64" }, { "internalType": "uint64", "name": "allowedHops", "type": "uint64" } ], "name": "transferLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unlock", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unlockableBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unlockedBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f51414e5820546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f51414e580000000000000000000000000000000000000000000000000000000081525081600390816200008f9190620004fa565b508060049081620000a19190620004fa565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000103306b0ac544b802c91c33bb2000006200010960201b60201c565b620006fc565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200017b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001729062000642565b60405180910390fd5b6200018f600083836200027660201b60201c565b8060026000828254620001a3919062000693565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002569190620006df565b60405180910390a362000272600083836200027b60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030257607f821691505b602082108103620003185762000317620002ba565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000343565b6200038e868362000343565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003db620003d5620003cf84620003a6565b620003b0565b620003a6565b9050919050565b6000819050919050565b620003f783620003ba565b6200040f6200040682620003e2565b84845462000350565b825550505050565b600090565b6200042662000417565b62000433818484620003ec565b505050565b5b818110156200045b576200044f6000826200041c565b60018101905062000439565b5050565b601f821115620004aa5762000474816200031e565b6200047f8462000333565b810160208510156200048f578190505b620004a76200049e8562000333565b83018262000438565b50505b505050565b600082821c905092915050565b6000620004cf60001984600802620004af565b1980831691505092915050565b6000620004ea8383620004bc565b9150826002028217905092915050565b620005058262000280565b67ffffffffffffffff8111156200052157620005206200028b565b5b6200052d8254620002e9565b6200053a8282856200045f565b600060209050601f8311600181146200057257600084156200055d578287015190505b620005698582620004dc565b865550620005d9565b601f19841662000582866200031e565b60005b82811015620005ac5784890151825560018201915060208501945060208101905062000585565b86831015620005cc5784890151620005c8601f891682620004bc565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200062a601f83620005e1565b91506200063782620005f2565b602082019050919050565b600060208201905081810360008301526200065d816200061b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006a082620003a6565b9150620006ad83620003a6565b9250828201905080821115620006c857620006c762000664565b5b92915050565b620006d981620003a6565b82525050565b6000602082019050620006f66000830184620006ce565b92915050565b6132ff806200070c6000396000f3fe6080604052600436106101235760003560e01c806370a08231116100a0578063a9059cbb11610064578063a9059cbb14610469578063dd62ed3e146104a6578063eb20c5bc146104e3578063eb8454fd14610520578063ee01698e146105495761012d565b806370a082311461034a578063740499ab1461038757806384955c88146103c457806395d89b4114610401578063a457c2d71461042c5761012d565b8063313ce567116100e7578063313ce5671461023f578063395093511461026a57806359355736146102a7578063599d866e146102e45780635a46d3b51461030d5761012d565b806306fdde0314610132578063095ea7b31461015d57806318160ddd1461019a57806323b872dd146101c55780632f6c493c146102025761012d565b3661012d57600080fd5b600080fd5b34801561013e57600080fd5b50610147610586565b604051610154919061223d565b60405180910390f35b34801561016957600080fd5b50610184600480360381019061017f91906122f8565b610618565b6040516101919190612353565b60405180910390f35b3480156101a657600080fd5b506101af61063b565b6040516101bc919061237d565b60405180910390f35b3480156101d157600080fd5b506101ec60048036038101906101e79190612398565b610645565b6040516101f99190612353565b60405180910390f35b34801561020e57600080fd5b50610229600480360381019061022491906123eb565b610674565b6040516102369190612353565b60405180910390f35b34801561024b57600080fd5b50610254610917565b6040516102619190612434565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906122f8565b610920565b60405161029e9190612353565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906123eb565b610957565b6040516102db919061237d565b60405180910390f35b3480156102f057600080fd5b5061030b600480360381019061030691906124b6565b6109a3565b005b34801561031957600080fd5b50610334600480360381019061032f91906123eb565b610b24565b60405161034191906125dc565b60405180910390f35b34801561035657600080fd5b50610371600480360381019061036c91906123eb565b610c59565b60405161037e919061237d565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906123eb565b610cee565b6040516103bb919061237d565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906123eb565b610eaa565b6040516103f8919061237d565b60405180910390f35b34801561040d57600080fd5b50610416610ef2565b604051610423919061223d565b60405180910390f35b34801561043857600080fd5b50610453600480360381019061044e91906122f8565b610f84565b6040516104609190612353565b60405180910390f35b34801561047557600080fd5b50610490600480360381019061048b91906122f8565b610ffb565b60405161049d9190612353565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c891906125f7565b61101e565b6040516104da919061237d565b60405180910390f35b3480156104ef57600080fd5b5061050a60048036038101906105059190612637565b6110a5565b6040516105179190612353565b60405180910390f35b34801561052c57600080fd5b50610547600480360381019061054291906123eb565b6111cb565b005b34801561055557600080fd5b50610570600480360381019061056b91906126c4565b611331565b60405161057d9190612353565b60405180910390f35b6060600380546105959061276e565b80601f01602080910402602001604051908101604052809291908181526020018280546105c19061276e565b801561060e5780601f106105e35761010080835404028352916020019161060e565b820191906000526020600020905b8154815290600101906020018083116105f157829003601f168201915b5050505050905090565b600080610623611356565b905061063081858561135e565b600191505092915050565b6000600254905090565b600080610650611356565b905061065d858285611527565b6106688585856115b3565b60019150509392505050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006106c384610cee565b90506000811180156106d9575060008260000154115b610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f906127eb565b60405180910390fd5b428260020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550808260000154610753919061283a565b8260000181905550806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107a9919061286e565b9250508190555060008260000154036108be57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549067ffffffffffffffff02191690556002820160086101000a81549067ffffffffffffffff02191690556002820160106101000a81549067ffffffffffffffff02191690556002820160186101000a81549067ffffffffffffffff021916905550508373ffffffffffffffffffffffffffffffffffffffff167f064f67e76df103eb3e142dac6110a06fcfc7a01ef2da651312b88eb6f0dd3d2860405160405180910390a25b8373ffffffffffffffffffffffffffffffffffffffff167f9c12b285834f9d1e649ea976a1e52e28e1f970147ba4ce1ffea1750195c225db82604051610904919061237d565b60405180910390a2600192505050919050565b60006012905090565b60008061092b611356565b905061094c81858561093d858961101e565b610947919061286e565b61135e565b600191505092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000463088888888886040516020016109c297969594939291906128c0565b604051602081830303815290604052805190602001209050610a1b81836002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050611829565b610a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a519061297b565b60405180910390fd5b6006600082815260200190815260200160002060009054906101000a900460ff1615610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab290612a0d565b60405180910390fd5b60016006600083815260200190815260200160002060006101000a81548160ff02191690831515021790555060008567ffffffffffffffff161115610b0f57610b08308888888888611994565b5050610b1c565b610b1a3088886115b3565b505b505050505050565b610b2c61214f565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ce7919061286e565b9050919050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060c001604052908160008201548152602001600182015481526020016002820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016002820160189054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050806040015167ffffffffffffffff16421015610e39576000915050610ea5565b806060015167ffffffffffffffff16421115610e5c578060000151915050610ea5565b60008160200151826080015167ffffffffffffffff1642610e7d919061283a565b610e879190612a2d565b905080826000015110610e9a5780610ea0565b81600001515b925050505b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054610f019061276e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d9061276e565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050905090565b600080610f8f611356565b90506000610f9d828661101e565b905083811015610fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd990612ae1565b60405180910390fd5b610fef828686840361135e565b60019250505092915050565b600080611006611356565b90506110138185856115b3565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110f1611356565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111ad5785811015611198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118f90612b73565b60405180910390fd5b6111ac886111a4611356565b88840361135e565b5b6111bb888888888888611994565b5060019150509695505050505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156112555750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128b90612bdf565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0b35050b9a10c7ebfedf47e208eb4167e1386112072928c5842a60e2297140d6600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516113269190612bff565b60405180910390a150565b600061134861133e611356565b8787878787611994565b506001905095945050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490612c8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612d1e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161151a919061237d565b60405180910390a3505050565b6000611533848461101e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115ad578181101561159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159690612d8a565b60405180910390fd5b6115ac848484840361135e565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161990612e1c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168890612eae565b60405180910390fd5b61169c838383611df0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171990612f40565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611810919061237d565b60405180910390a3611823848484611df5565b50505050565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b8360016002811061186457611863612f60565b5b60200201511690506000601b60ff8560016002811061188657611885612f60565b5b602002015160001c901c61189a919061286e565b90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156118d25760009250505061198e565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600186838760006002811061192357611922612f60565b5b602002015186604051600081526020016040526040516119469493929190612fa8565b6020604051602081039080840390855afa158015611968573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff1614925050505b92915050565b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb90612eae565b60405180910390fd5b60008060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600082600001541115611bb7578160020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168767ffffffffffffffff16148015611b4057508160020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168667ffffffffffffffff16145b8015611b7757508160020160189054906101000a900467ffffffffffffffff1667ffffffffffffffff168567ffffffffffffffff16145b611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad9061305f565b60405180910390fd5b5b87816000015484611bc8919061286e565b1015611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c00906130cb565b60405180910390fd5b878310611c6d578783036000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c638a8a8a8a8a8a611dfa565b9350505050611de6565b8060020160009054906101000a900467ffffffffffffffff1667ffffffffffffffff168767ffffffffffffffff1610158015611cd557508060020160089054906101000a900467ffffffffffffffff1667ffffffffffffffff168667ffffffffffffffff1610155b8015611d0c57508060020160189054906101000a900467ffffffffffffffff1667ffffffffffffffff168567ffffffffffffffff16105b611d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d429061315d565b60405180910390fd5b87816000015410611d7d57878160000154038160000181905550611d738a8a8a8a8a8a611dfa565b9350505050611de6565b8060000154880383036000808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008160000181905550611de08a8a8a8a8a8a611dfa565b93505050505b9695505050505050565b505050565b505050565b60008367ffffffffffffffff168367ffffffffffffffff161015611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a906131c9565b60405180910390fd5b428467ffffffffffffffff161015611ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9790613235565b60405180910390fd5b600080600087600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015401925086860367ffffffffffffffff16915060008211611f0a576000611f1c565b818381611f1a57611f19613255565b5b045b90506040518060c001604052808481526020018281526020018867ffffffffffffffff1681526020018767ffffffffffffffff1681526020018867ffffffffffffffff1681526020018667ffffffffffffffff16815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508873ffffffffffffffffffffffffffffffffffffffff167f74e0938598868b4c1e871f3cff0292e8399ee8cc53264926f8956ef711f7bc37848989896040516120d19493929190613284565b60405180910390a28873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a604051612136919061237d565b60405180910390a3600193505050509695505050505050565b6040518060c001604052806000815260200160008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600067ffffffffffffffff1681525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156121e75780820151818401526020810190506121cc565b60008484015250505050565b6000601f19601f8301169050919050565b600061220f826121ad565b61221981856121b8565b93506122298185602086016121c9565b612232816121f3565b840191505092915050565b600060208201905081810360008301526122578184612204565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061228f82612264565b9050919050565b61229f81612284565b81146122aa57600080fd5b50565b6000813590506122bc81612296565b92915050565b6000819050919050565b6122d5816122c2565b81146122e057600080fd5b50565b6000813590506122f2816122cc565b92915050565b6000806040838503121561230f5761230e61225f565b5b600061231d858286016122ad565b925050602061232e858286016122e3565b9150509250929050565b60008115159050919050565b61234d81612338565b82525050565b60006020820190506123686000830184612344565b92915050565b612377816122c2565b82525050565b6000602082019050612392600083018461236e565b92915050565b6000806000606084860312156123b1576123b061225f565b5b60006123bf868287016122ad565b93505060206123d0868287016122ad565b92505060406123e1868287016122e3565b9150509250925092565b6000602082840312156124015761240061225f565b5b600061240f848285016122ad565b91505092915050565b600060ff82169050919050565b61242e81612418565b82525050565b60006020820190506124496000830184612425565b92915050565b600067ffffffffffffffff82169050919050565b61246c8161244f565b811461247757600080fd5b50565b60008135905061248981612463565b92915050565b600080fd5b6000819050826020600202820111156124b0576124af61248f565b5b92915050565b60008060008060008060e087890312156124d3576124d261225f565b5b60006124e189828a016122ad565b96505060206124f289828a016122e3565b955050604061250389828a0161247a565b945050606061251489828a0161247a565b935050608061252589828a0161247a565b92505060a061253689828a01612494565b9150509295509295509295565b61254c816122c2565b82525050565b61255b8161244f565b82525050565b60c0820160008201516125776000850182612543565b50602082015161258a6020850182612543565b50604082015161259d6040850182612552565b5060608201516125b06060850182612552565b5060808201516125c36080850182612552565b5060a08201516125d660a0850182612552565b50505050565b600060c0820190506125f16000830184612561565b92915050565b6000806040838503121561260e5761260d61225f565b5b600061261c858286016122ad565b925050602061262d858286016122ad565b9150509250929050565b60008060008060008060c087890312156126545761265361225f565b5b600061266289828a016122ad565b965050602061267389828a016122ad565b955050604061268489828a016122e3565b945050606061269589828a0161247a565b93505060806126a689828a0161247a565b92505060a06126b789828a0161247a565b9150509295509295509295565b600080600080600060a086880312156126e0576126df61225f565b5b60006126ee888289016122ad565b95505060206126ff888289016122e3565b94505060406127108882890161247a565b93505060606127218882890161247a565b92505060806127328882890161247a565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061278657607f821691505b6020821081036127995761279861273f565b5b50919050565b7f4e6f20756e6c6f636b61626c6520746f6b656e73210000000000000000000000600082015250565b60006127d56015836121b8565b91506127e08261279f565b602082019050919050565b60006020820190508181036000830152612804816127c8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612845826122c2565b9150612850836122c2565b92508282039050818111156128685761286761280b565b5b92915050565b6000612879826122c2565b9150612884836122c2565b925082820190508082111561289c5761289b61280b565b5b92915050565b6128ab81612284565b82525050565b6128ba8161244f565b82525050565b600060e0820190506128d5600083018a61236e565b6128e260208301896128a2565b6128ef60408301886128a2565b6128fc606083018761236e565b61290960808301866128b1565b61291660a08301856128b1565b61292360c08301846128b1565b98975050505050505050565b7f436865717565207369676e617475726520697320696e76616c69642100000000600082015250565b6000612965601c836121b8565b91506129708261292f565b602082019050919050565b6000602082019050818103600083015261299481612958565b9050919050565b7f54686973206368657175652077617320656e63617368656420616c726561647960008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b60006129f76021836121b8565b9150612a028261299b565b604082019050919050565b60006020820190508181036000830152612a26816129ea565b9050919050565b6000612a38826122c2565b9150612a43836122c2565b9250828202612a51816122c2565b91508282048414831517612a6857612a6761280b565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612acb6025836121b8565b9150612ad682612a6f565b604082019050919050565b60006020820190508181036000830152612afa81612abe565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612b5d6028836121b8565b9150612b6882612b01565b604082019050919050565b60006020820190508181036000830152612b8c81612b50565b9050919050565b7f496e76616c696420636865717565207369676e65720000000000000000000000600082015250565b6000612bc96015836121b8565b9150612bd482612b93565b602082019050919050565b60006020820190508181036000830152612bf881612bbc565b9050919050565b6000602082019050612c1460008301846128a2565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612c766024836121b8565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d086022836121b8565b9150612d1382612cac565b604082019050919050565b60006020820190508181036000830152612d3781612cfb565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d74601d836121b8565b9150612d7f82612d3e565b602082019050919050565b60006020820190508181036000830152612da381612d67565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e066025836121b8565b9150612e1182612daa565b604082019050919050565b60006020820190508181036000830152612e3581612df9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e986023836121b8565b9150612ea382612e3c565b604082019050919050565b60006020820190508181036000830152612ec781612e8b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612f2a6026836121b8565b9150612f3582612ece565b604082019050919050565b60006020820190508181036000830152612f5981612f1d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b612fa281612f8f565b82525050565b6000608082019050612fbd6000830187612f99565b612fca6020830186612425565b612fd76040830185612f99565b612fe46060830184612f99565b95945050505050565b7f4f6e6c79206f6e65206c6f636b20706172616d7320706572206164647265737360008201527f20616c6c6f776564210000000000000000000000000000000000000000000000602082015250565b60006130496029836121b8565b915061305482612fed565b604082019050919050565b600060208201905081810360008301526130788161303c565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e636500600082015250565b60006130b5601f836121b8565b91506130c08261307f565b602082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4f6e6c792073616d65202f207374726963746572206c6f636b20706172616d7360008201527f20616c6c6f776564210000000000000000000000000000000000000000000000602082015250565b60006131476029836121b8565b9150613152826130eb565b604082019050919050565b600060208201905081810360008301526131768161313a565b9050919050565b7f536f66744c6f636b206d757374206265203e3d20486172644c6f636b21000000600082015250565b60006131b3601d836121b8565b91506131be8261317d565b602082019050919050565b600060208201905081810360008301526131e2816131a6565b9050919050565b7f486172644c6f636b206d75737420626520696e20746865206675747572652100600082015250565b600061321f601f836121b8565b915061322a826131e9565b602082019050919050565b6000602082019050818103600083015261324e81613212565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000608082019050613299600083018761236e565b6132a660208301866128b1565b6132b360408301856128b1565b6132c060608301846128b1565b9594505050505056fea2646970667358221220102d244c79e4fc94e8b0ed396a2709d169a12a4e469a341c29590c69b4ee8d3664736f6c63430008110033