[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "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": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
610160604052348015610010575f80fd5b506040518060400160405280600a81526020017f4465426f78546f6b656e00000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600a81526020017f4465426f78546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f424f58000000000000000000000000000000000000000000000000000000000081525081600390816100f991906109dd565b50806004908161010991906109dd565b50505061012060058361036160201b90919060201c565b610120818152505061013c60068261036160201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506101796103ae60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250505050506101e6732745f97f501087caf8ea740854cfcac011fb34c36a084595161401484a00000061040860201b60201c565b610215732745f97f501087caf8ea740854cfcac011fb34c36a108b2a2c2802909400000061040860201b60201c565b610244735b1afdb8c23569484773af7bd4c98af9ee7599d96a295be96e6406697200000061040860201b60201c565b61027373a0c3d11ee7e5ffaf0f39b2f99de7a7732f90a2ad6aa56fa5b99019a5c800000061040860201b60201c565b6102a37337c8c7166b3adcb1f58c1036d0272fbcd90d87ea6b0121836204bc2ce21e00000061040860201b60201c565b6102d273d0ae9a0b0596b9a68f56ae629eabfb8a58da2f756aa56fa5b99019a5c800000061040860201b60201c565b61030173866f585a1751d2a49ad67bf69bce225f4e30de8d6a8c9ee6775415ccea00000061040860201b60201c565b6b033b2e3c9fd0803ce800000061031c61048d60201b60201c565b1461035c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035390610b06565b60405180910390fd5b610dab565b5f6020835110156103825761037b8361049660201b60201c565b90506103a8565b82610392836104fb60201b60201c565b5f0190816103a091906109dd565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016103ed959493929190610b8a565b60405160208183030381529060405280519060200120905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610478575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161046f9190610bdb565b60405180910390fd5b6104895f838361050460201b60201c565b5050565b5f600254905090565b5f80829050601f815111156104e257826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016104d99190610c4a565b60405180910390fd5b8051816104ee90610c97565b5f1c175f1b915050919050565b5f819050919050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361057457816040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161056b9190610bdb565b60405180910390fd5b61058583838361058a60201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105da578060025f8282546105ce9190610d2a565b925050819055506106a8565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610663578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161065a93929190610d5d565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106ef578060025f8282540392505081905550610739565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107969190610d92565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061081e57607f821691505b602082108103610831576108306107da565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610858565b61089d8683610858565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6108e16108dc6108d7846108b5565b6108be565b6108b5565b9050919050565b5f819050919050565b6108fa836108c7565b61090e610906826108e8565b848454610864565b825550505050565b5f90565b610922610916565b61092d8184846108f1565b505050565b5b81811015610950576109455f8261091a565b600181019050610933565b5050565b601f8211156109955761096681610837565b61096f84610849565b8101602085101561097e578190505b61099261098a85610849565b830182610932565b50505b505050565b5f82821c905092915050565b5f6109b55f198460080261099a565b1980831691505092915050565b5f6109cd83836109a6565b9150826002028217905092915050565b6109e6826107a3565b67ffffffffffffffff8111156109ff576109fe6107ad565b5b610a098254610807565b610a14828285610954565b5f60209050601f831160018114610a45575f8415610a33578287015190505b610a3d85826109c2565b865550610aa4565b601f198416610a5386610837565b5f5b82811015610a7a57848901518255600182019150602085019450602081019050610a55565b86831015610a975784890151610a93601f8916826109a6565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f696e636f727265637420746f74616c20737570706c79000000000000000000005f82015250565b5f610af0601683610aac565b9150610afb82610abc565b602082019050919050565b5f6020820190508181035f830152610b1d81610ae4565b9050919050565b5f819050919050565b610b3681610b24565b82525050565b610b45816108b5565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b7482610b4b565b9050919050565b610b8481610b6a565b82525050565b5f60a082019050610b9d5f830188610b2d565b610baa6020830187610b2d565b610bb76040830186610b2d565b610bc46060830185610b3c565b610bd16080830184610b7b565b9695505050505050565b5f602082019050610bee5f830184610b7b565b92915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c1c826107a3565b610c268185610aac565b9350610c36818560208601610bf4565b610c3f81610c02565b840191505092915050565b5f6020820190508181035f830152610c628184610c12565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610c8e8251610b24565b80915050919050565b5f610ca182610c6a565b82610cab84610c74565b9050610cb681610c83565b92506020821015610cf657610cf17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802610858565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d34826108b5565b9150610d3f836108b5565b9250828201905080821115610d5757610d56610cfd565b5b92915050565b5f606082019050610d705f830186610b7b565b610d7d6020830185610b3c565b610d8a6040830184610b3c565b949350505050565b5f602082019050610da55f830184610b3c565b92915050565b60805160a05160c05160e051610100516101205161014051611bd4610dfc5f395f610a1501525f6109da01525f610d7501525f610d5401525f6108d801525f61092e01525f6109570152611bd45ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b411461022d578063a9059cbb1461024b578063d505accf1461027b578063dd62ed3e14610297576100cd565b806370a08231146101a95780637ecebe00146101d957806384b0196e14610209576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d5780633644e5151461018b575b5f80fd5b6100d96102c7565b6040516100e69190611444565b60405180910390f35b610109600480360381019061010491906114f5565b610357565b604051610116919061154d565b60405180910390f35b610127610379565b6040516101349190611575565b60405180910390f35b6101576004803603810190610152919061158e565b610382565b604051610164919061154d565b60405180910390f35b6101756103b0565b60405161018291906115f9565b60405180910390f35b6101936103b8565b6040516101a0919061162a565b60405180910390f35b6101c360048036038101906101be9190611643565b6103c6565b6040516101d09190611575565b60405180910390f35b6101f360048036038101906101ee9190611643565b61040b565b6040516102009190611575565b60405180910390f35b61021161041c565b604051610224979695949392919061176e565b60405180910390f35b6102356104c1565b6040516102429190611444565b60405180910390f35b610265600480360381019061026091906114f5565b610551565b604051610272919061154d565b60405180910390f35b61029560048036038101906102909190611844565b610573565b005b6102b160048036038101906102ac91906118e1565b6106b8565b6040516102be9190611575565b60405180910390f35b6060600380546102d69061194c565b80601f01602080910402602001604051908101604052809291908181526020018280546103029061194c565b801561034d5780601f106103245761010080835404028352916020019161034d565b820191905f5260205f20905b81548152906001019060200180831161033057829003601f168201915b5050505050905090565b5f8061036161073a565b905061036e818585610741565b600191505092915050565b5f600254905090565b5f8061038c61073a565b9050610399858285610753565b6103a48585856107e5565b60019150509392505050565b5f6012905090565b5f6103c16108d5565b905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6104158261098b565b9050919050565b5f6060805f805f606061042d6109d1565b610435610a0c565b46305f801b5f67ffffffffffffffff8111156104545761045361197c565b5b6040519080825280602002602001820160405280156104825781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6060600480546104d09061194c565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc9061194c565b80156105475780601f1061051e57610100808354040283529160200191610547565b820191905f5260205f20905b81548152906001019060200180831161052a57829003601f168201915b5050505050905090565b5f8061055b61073a565b90506105688185856107e5565b600191505092915050565b834211156105b857836040517f627913020000000000000000000000000000000000000000000000000000000081526004016105af9190611575565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105e68c610a47565b896040516020016105fc969594939291906119a9565b6040516020818303038152906040528051906020012090505f61061e82610a9a565b90505f61062d82878787610ab3565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a157808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610698929190611a08565b60405180910390fd5b6106ac8a8a8a610741565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61074e8383836001610ae1565b505050565b5f61075e84846106b8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107df57818110156107d0578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107c793929190611a2f565b60405180910390fd5b6107de84848484035f610ae1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610855575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161084c9190611a64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c5575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016108bc9190611a64565b60405180910390fd5b6108d0838383610cb0565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561095057507f000000000000000000000000000000000000000000000000000000000000000046145b1561097d577f00000000000000000000000000000000000000000000000000000000000000009050610988565b610985610d30565b90505b90565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610a0760057f0000000000000000000000000000000000000000000000000000000000000000610dc590919063ffffffff16565b905090565b6060610a4260067f0000000000000000000000000000000000000000000000000000000000000000610dc590919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610aac610aa66108d5565b83610e72565b9050919050565b5f805f80610ac388888888610eb2565b925092509250610ad38282610f99565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b51575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610b489190611a64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bc1575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610bb89190611a64565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610caa578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ca19190611575565b60405180910390a35b50505050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d2057816040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610d179190611a64565b60405180910390fd5b610d2b8383836110fb565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001610daa959493929190611a7d565b60405160208183030381529060405280519060200120905090565b606060ff5f1b8314610de157610dda83611314565b9050610e6c565b818054610ded9061194c565b80601f0160208091040260200160405190810160405280929190818152602001828054610e199061194c565b8015610e645780601f10610e3b57610100808354040283529160200191610e64565b820191905f5260205f20905b815481529060010190602001808311610e4757829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115610eee575f600385925092509250610f8f565b5f6001888888886040515f8152602001604052604051610f119493929190611ace565b6020604051602081039080840390855afa158015610f31573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f82575f60015f801b93509350935050610f8f565b805f805f1b935093509350505b9450945094915050565b5f6003811115610fac57610fab611b11565b5b826003811115610fbf57610fbe611b11565b5b03156110f75760016003811115610fd957610fd8611b11565b5b826003811115610fec57610feb611b11565b5b03611023576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561103757611036611b11565b5b82600381111561104a57611049611b11565b5b0361108e57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016110859190611575565b60405180910390fd5b6003808111156110a1576110a0611b11565b5b8260038111156110b4576110b3611b11565b5b036110f657806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016110ed919061162a565b60405180910390fd5b5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361114b578060025f82825461113f9190611b6b565b92505081905550611219565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156111d4578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016111cb93929190611a2f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611260578060025f82825403925050819055506112aa565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113079190611575565b60405180910390a3505050565b60605f61132083611386565b90505f602067ffffffffffffffff81111561133e5761133d61197c565b5b6040519080825280601f01601f1916602001820160405280156113705781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f8111156113cb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611416826113d4565b61142081856113de565b93506114308185602086016113ee565b611439816113fc565b840191505092915050565b5f6020820190508181035f83015261145c818461140c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61149182611468565b9050919050565b6114a181611487565b81146114ab575f80fd5b50565b5f813590506114bc81611498565b92915050565b5f819050919050565b6114d4816114c2565b81146114de575f80fd5b50565b5f813590506114ef816114cb565b92915050565b5f806040838503121561150b5761150a611464565b5b5f611518858286016114ae565b9250506020611529858286016114e1565b9150509250929050565b5f8115159050919050565b61154781611533565b82525050565b5f6020820190506115605f83018461153e565b92915050565b61156f816114c2565b82525050565b5f6020820190506115885f830184611566565b92915050565b5f805f606084860312156115a5576115a4611464565b5b5f6115b2868287016114ae565b93505060206115c3868287016114ae565b92505060406115d4868287016114e1565b9150509250925092565b5f60ff82169050919050565b6115f3816115de565b82525050565b5f60208201905061160c5f8301846115ea565b92915050565b5f819050919050565b61162481611612565b82525050565b5f60208201905061163d5f83018461161b565b92915050565b5f6020828403121561165857611657611464565b5b5f611665848285016114ae565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6116a28161166e565b82525050565b6116b181611487565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116e9816114c2565b82525050565b5f6116fa83836116e0565b60208301905092915050565b5f602082019050919050565b5f61171c826116b7565b61172681856116c1565b9350611731836116d1565b805f5b8381101561176157815161174888826116ef565b975061175383611706565b925050600181019050611734565b5085935050505092915050565b5f60e0820190506117815f83018a611699565b8181036020830152611793818961140c565b905081810360408301526117a7818861140c565b90506117b66060830187611566565b6117c360808301866116a8565b6117d060a083018561161b565b81810360c08301526117e28184611712565b905098975050505050505050565b6117f9816115de565b8114611803575f80fd5b50565b5f81359050611814816117f0565b92915050565b61182381611612565b811461182d575f80fd5b50565b5f8135905061183e8161181a565b92915050565b5f805f805f805f60e0888a03121561185f5761185e611464565b5b5f61186c8a828b016114ae565b975050602061187d8a828b016114ae565b965050604061188e8a828b016114e1565b955050606061189f8a828b016114e1565b94505060806118b08a828b01611806565b93505060a06118c18a828b01611830565b92505060c06118d28a828b01611830565b91505092959891949750929550565b5f80604083850312156118f7576118f6611464565b5b5f611904858286016114ae565b9250506020611915858286016114ae565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061196357607f821691505b6020821081036119765761197561191f565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c0820190506119bc5f83018961161b565b6119c960208301886116a8565b6119d660408301876116a8565b6119e36060830186611566565b6119f06080830185611566565b6119fd60a0830184611566565b979650505050505050565b5f604082019050611a1b5f8301856116a8565b611a2860208301846116a8565b9392505050565b5f606082019050611a425f8301866116a8565b611a4f6020830185611566565b611a5c6040830184611566565b949350505050565b5f602082019050611a775f8301846116a8565b92915050565b5f60a082019050611a905f83018861161b565b611a9d602083018761161b565b611aaa604083018661161b565b611ab76060830185611566565b611ac460808301846116a8565b9695505050505050565b5f608082019050611ae15f83018761161b565b611aee60208301866115ea565b611afb604083018561161b565b611b08606083018461161b565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b75826114c2565b9150611b80836114c2565b9250828201905080821115611b9857611b97611b3e565b5b9291505056fea2646970667358221220f3811b4e408df6335e09e4ed6d7d340ce6bd2017af440a5e0ca8e7d36e16d18664736f6c634300081a0033