[ { "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": [ { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "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" } ]
6101606040526b1027e72f1f12813088000000600855606460146008546200002891906200075c565b620000349190620007d3565b6009556064600c6008546200004a91906200075c565b620000569190620007d3565b600a556064600880546200006b91906200075c565b620000779190620007d3565b600b556064600880546200008c91906200075c565b620000989190620007d3565b600c55600954600c54600b54600a54620000b391906200080a565b620000bf91906200080a565b620000cb91906200080a565b600854620000da919062000844565b600d55348015620000e9575f80fd5b506040518060400160405280600581526020017f4d415a5a45000000000000000000000000000000000000000000000000000000815250806040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d415a5a450000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4d415a5a450000000000000000000000000000000000000000000000000000008152508160039081620001d4919062000ad9565b508060049081620001e6919062000ad9565b505050620001ff6005836200035460201b90919060201c565b61012081815250506200021d6006826200035460201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506200025c620003a960201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620002c273a043bc356a11f548f77f716e8d3c31b1e8bedf7a6009546200040560201b60201c565b620002ea73a81aa52ea19ef26739b0762c03381f9a84c8b05d600a546200040560201b60201c565b620003127349d125ca46997e3c90ebb0cc9940e033487f8fa4600b546200040560201b60201c565b6200033a738126a70a57b44d32e6eb9f41c8df4a2a47ff4be7600c546200040560201b60201c565b6200034e33600d546200040560201b60201c565b62000e41565b5f602083511015620003795762000371836200048f60201b60201c565b9050620003a3565b826200038b83620004f960201b60201c565b5f0190816200039b919062000ad9565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001620003ea95949392919062000c2b565b60405160208183030381529060405280519060200120905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000478575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200046f919062000c86565b60405180910390fd5b6200048b5f83836200050260201b60201c565b5050565b5f80829050601f81511115620004de57826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620004d5919062000d2b565b60405180910390fd5b805181620004ec9062000d7c565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000556578060025f8282546200054991906200080a565b9250508190555062000627565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620005e2578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620005d99392919062000deb565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000670578060025f8282540392505081905550620006ba565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000719919062000e26565b60405180910390a3505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007688262000726565b9150620007758362000726565b9250828202620007858162000726565b915082820484148315176200079f576200079e6200072f565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620007df8262000726565b9150620007ec8362000726565b925082620007ff57620007fe620007a6565b5b828204905092915050565b5f620008168262000726565b9150620008238362000726565b92508282019050808211156200083e576200083d6200072f565b5b92915050565b5f620008508262000726565b91506200085d8362000726565b92508282039050818111156200087857620008776200072f565b5b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008fa57607f821691505b60208210810362000910576200090f620008b5565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000937565b62000980868362000937565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620009c1620009bb620009b58462000726565b62000998565b62000726565b9050919050565b5f819050919050565b620009dc83620009a1565b620009f4620009eb82620009c8565b84845462000943565b825550505050565b5f90565b62000a0a620009fc565b62000a17818484620009d1565b505050565b5b8181101562000a3e5762000a325f8262000a00565b60018101905062000a1d565b5050565b601f82111562000a8d5762000a578162000916565b62000a628462000928565b8101602085101562000a72578190505b62000a8a62000a818562000928565b83018262000a1c565b50505b505050565b5f82821c905092915050565b5f62000aaf5f198460080262000a92565b1980831691505092915050565b5f62000ac9838362000a9e565b9150826002028217905092915050565b62000ae4826200087e565b67ffffffffffffffff81111562000b005762000aff62000888565b5b62000b0c8254620008e2565b62000b1982828562000a42565b5f60209050601f83116001811462000b4f575f841562000b3a578287015190505b62000b46858262000abc565b86555062000bb5565b601f19841662000b5f8662000916565b5f5b8281101562000b885784890151825560018201915060208501945060208101905062000b61565b8683101562000ba8578489015162000ba4601f89168262000a9e565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b62000bd18162000bbd565b82525050565b62000be28162000726565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c138262000be8565b9050919050565b62000c258162000c07565b82525050565b5f60a08201905062000c405f83018862000bc6565b62000c4f602083018762000bc6565b62000c5e604083018662000bc6565b62000c6d606083018562000bd7565b62000c7c608083018462000c1a565b9695505050505050565b5f60208201905062000c9b5f83018462000c1a565b92915050565b5f82825260208201905092915050565b5f5b8381101562000cd057808201518184015260208101905062000cb3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f62000cf7826200087e565b62000d03818562000ca1565b935062000d1581856020860162000cb1565b62000d208162000cdb565b840191505092915050565b5f6020820190508181035f83015262000d45818462000ceb565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f62000d73825162000bbd565b80915050919050565b5f62000d888262000d4d565b8262000d948462000d57565b905062000da18162000d66565b9250602082101562000de45762000ddf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8360200360080262000937565b831692505b5050919050565b5f60608201905062000e005f83018662000c1a565b62000e0f602083018562000bd7565b62000e1e604083018462000bd7565b949350505050565b5f60208201905062000e3b5f83018462000bd7565b92915050565b60805160a05160c05160e051610100516101205161014051611c6362000e935f395f610adf01525f610aa401525f610fd801525f610fb701525f61092301525f61097901525f6109a20152611c635ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b4114610264578063a9059cbb14610282578063d505accf146102b2578063dd62ed3e146102ce576100e8565b806370a08231146101e05780637ecebe001461021057806384b0196e14610240576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce567146101885780633644e515146101a657806342966c68146101c4576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102fe565b60405161010191906114a8565b60405180910390f35b610124600480360381019061011f9190611559565b61038e565b60405161013191906115b1565b60405180910390f35b6101426103b0565b60405161014f91906115d9565b60405180910390f35b610172600480360381019061016d91906115f2565b6103b9565b60405161017f91906115b1565b60405180910390f35b6101906103e7565b60405161019d919061165d565b60405180910390f35b6101ae6103ef565b6040516101bb919061168e565b60405180910390f35b6101de60048036038101906101d991906116a7565b6103fd565b005b6101fa60048036038101906101f591906116d2565b610411565b60405161020791906115d9565b60405180910390f35b61022a600480360381019061022591906116d2565b610456565b60405161023791906115d9565b60405180910390f35b610248610467565b60405161025b97969594939291906117fd565b60405180910390f35b61026c61050c565b60405161027991906114a8565b60405180910390f35b61029c60048036038101906102979190611559565b61059c565b6040516102a991906115b1565b60405180910390f35b6102cc60048036038101906102c791906118d3565b6105be565b005b6102e860048036038101906102e39190611970565b610703565b6040516102f591906115d9565b60405180910390f35b60606003805461030d906119db565b80601f0160208091040260200160405190810160405280929190818152602001828054610339906119db565b80156103845780601f1061035b57610100808354040283529160200191610384565b820191905f5260205f20905b81548152906001019060200180831161036757829003601f168201915b5050505050905090565b5f80610398610785565b90506103a581858561078c565b600191505092915050565b5f600254905090565b5f806103c3610785565b90506103d085828561079e565b6103db858585610830565b60019150509392505050565b5f6012905090565b5f6103f8610920565b905090565b61040e610408610785565b826109d6565b50565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f61046082610a55565b9050919050565b5f6060805f805f6060610478610a9b565b610480610ad6565b46305f801b5f67ffffffffffffffff81111561049f5761049e611a0b565b5b6040519080825280602002602001820160405280156104cd5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b60606004805461051b906119db565b80601f0160208091040260200160405190810160405280929190818152602001828054610547906119db565b80156105925780601f1061056957610100808354040283529160200191610592565b820191905f5260205f20905b81548152906001019060200180831161057557829003601f168201915b5050505050905090565b5f806105a6610785565b90506105b3818585610830565b600191505092915050565b8342111561060357836040517f627913020000000000000000000000000000000000000000000000000000000081526004016105fa91906115d9565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886106318c610b11565b8960405160200161064796959493929190611a38565b6040516020818303038152906040528051906020012090505f61066982610b64565b90505f61067882878787610b7d565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106ec57808a6040517f4b800e460000000000000000000000000000000000000000000000000000000081526004016106e3929190611a97565b60405180910390fd5b6106f78a8a8a61078c565b50505050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6107998383836001610bab565b505050565b5f6107a98484610703565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461082a578181101561081b578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161081293929190611abe565b60405180910390fd5b61082984848484035f610bab565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108a0575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108979190611af3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610910575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109079190611af3565b60405180910390fd5b61091b838383610d7a565b505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561099b57507f000000000000000000000000000000000000000000000000000000000000000046145b156109c8577f000000000000000000000000000000000000000000000000000000000000000090506109d3565b6109d0610f93565b90505b90565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a46575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a3d9190611af3565b60405180910390fd5b610a51825f83610d7a565b5050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060610ad160057f000000000000000000000000000000000000000000000000000000000000000061102890919063ffffffff16565b905090565b6060610b0c60067f000000000000000000000000000000000000000000000000000000000000000061102890919063ffffffff16565b905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f610b76610b70610920565b836110d5565b9050919050565b5f805f80610b8d88888888611115565b925092509250610b9d82826111fc565b829350505050949350505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c1b575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610c129190611af3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c8b575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610c829190611af3565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610d74578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d6b91906115d9565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dca578060025f828254610dbe9190611b39565b92505081905550610e98565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e53578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610e4a93929190611abe565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610edf578060025f8282540392505081905550610f29565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f8691906115d9565b60405180910390a3505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161100d959493929190611b6c565b60405160208183030381529060405280519060200120905090565b606060ff5f1b83146110445761103d8361135e565b90506110cf565b818054611050906119db565b80601f016020809104026020016040519081016040528092919081815260200182805461107c906119db565b80156110c75780601f1061109e576101008083540402835291602001916110c7565b820191905f5260205f20905b8154815290600101906020018083116110aa57829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611151575f6003859250925092506111f2565b5f6001888888886040515f81526020016040526040516111749493929190611bbd565b6020604051602081039080840390855afa158015611194573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111e5575f60015f801b935093509350506111f2565b805f805f1b935093509350505b9450945094915050565b5f600381111561120f5761120e611c00565b5b82600381111561122257611221611c00565b5b031561135a576001600381111561123c5761123b611c00565b5b82600381111561124f5761124e611c00565b5b03611286576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561129a57611299611c00565b5b8260038111156112ad576112ac611c00565b5b036112f157805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112e891906115d9565b60405180910390fd5b60038081111561130457611303611c00565b5b82600381111561131757611316611c00565b5b0361135957806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611350919061168e565b60405180910390fd5b5b5050565b60605f61136a836113d0565b90505f602067ffffffffffffffff81111561138857611387611a0b565b5b6040519080825280601f01601f1916602001820160405280156113ba5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611415576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561145557808201518184015260208101905061143a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61147a8261141e565b6114848185611428565b9350611494818560208601611438565b61149d81611460565b840191505092915050565b5f6020820190508181035f8301526114c08184611470565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6114f5826114cc565b9050919050565b611505816114eb565b811461150f575f80fd5b50565b5f81359050611520816114fc565b92915050565b5f819050919050565b61153881611526565b8114611542575f80fd5b50565b5f813590506115538161152f565b92915050565b5f806040838503121561156f5761156e6114c8565b5b5f61157c85828601611512565b925050602061158d85828601611545565b9150509250929050565b5f8115159050919050565b6115ab81611597565b82525050565b5f6020820190506115c45f8301846115a2565b92915050565b6115d381611526565b82525050565b5f6020820190506115ec5f8301846115ca565b92915050565b5f805f60608486031215611609576116086114c8565b5b5f61161686828701611512565b935050602061162786828701611512565b925050604061163886828701611545565b9150509250925092565b5f60ff82169050919050565b61165781611642565b82525050565b5f6020820190506116705f83018461164e565b92915050565b5f819050919050565b61168881611676565b82525050565b5f6020820190506116a15f83018461167f565b92915050565b5f602082840312156116bc576116bb6114c8565b5b5f6116c984828501611545565b91505092915050565b5f602082840312156116e7576116e66114c8565b5b5f6116f484828501611512565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611731816116fd565b82525050565b611740816114eb565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61177881611526565b82525050565b5f611789838361176f565b60208301905092915050565b5f602082019050919050565b5f6117ab82611746565b6117b58185611750565b93506117c083611760565b805f5b838110156117f05781516117d7888261177e565b97506117e283611795565b9250506001810190506117c3565b5085935050505092915050565b5f60e0820190506118105f83018a611728565b81810360208301526118228189611470565b905081810360408301526118368188611470565b905061184560608301876115ca565b6118526080830186611737565b61185f60a083018561167f565b81810360c083015261187181846117a1565b905098975050505050505050565b61188881611642565b8114611892575f80fd5b50565b5f813590506118a38161187f565b92915050565b6118b281611676565b81146118bc575f80fd5b50565b5f813590506118cd816118a9565b92915050565b5f805f805f805f60e0888a0312156118ee576118ed6114c8565b5b5f6118fb8a828b01611512565b975050602061190c8a828b01611512565b965050604061191d8a828b01611545565b955050606061192e8a828b01611545565b945050608061193f8a828b01611895565b93505060a06119508a828b016118bf565b92505060c06119618a828b016118bf565b91505092959891949750929550565b5f8060408385031215611986576119856114c8565b5b5f61199385828601611512565b92505060206119a485828601611512565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806119f257607f821691505b602082108103611a0557611a046119ae565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60c082019050611a4b5f83018961167f565b611a586020830188611737565b611a656040830187611737565b611a7260608301866115ca565b611a7f60808301856115ca565b611a8c60a08301846115ca565b979650505050505050565b5f604082019050611aaa5f830185611737565b611ab76020830184611737565b9392505050565b5f606082019050611ad15f830186611737565b611ade60208301856115ca565b611aeb60408301846115ca565b949350505050565b5f602082019050611b065f830184611737565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611b4382611526565b9150611b4e83611526565b9250828201905080821115611b6657611b65611b0c565b5b92915050565b5f60a082019050611b7f5f83018861167f565b611b8c602083018761167f565b611b99604083018661167f565b611ba660608301856115ca565b611bb36080830184611737565b9695505050505050565b5f608082019050611bd05f83018761167f565b611bdd602083018661164e565b611bea604083018561167f565b611bf7606083018461167f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea2646970667358221220df8797174c2cc054d65fb3898c9e376d2a0c4a39e8ba6aeb188cf9727f8a632c64736f6c63430008180033