[ { "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": "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": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "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": [ { "internalType": "address[]", "name": "receivers", "type": "address[]" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "batchTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "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": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "openTrading", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "tradingOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "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" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
610160604052348015610010575f80fd5b506040518060400160405280600581526020017f456c6d65720000000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ee575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100e591906104df565b60405180910390fd5b6100fd816102ca60201b60201c565b5061011260018361038b60201b90919060201c565b610120818152505061012e60028261038b60201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a0818152505061016b6103d860201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6101f69190610669565b62a037a061020491906106b3565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6102a29190610669565b62a037a06102b091906106b3565b6040516102bd9190610703565b60405180910390a3610b9e565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6020835110156103ac576103a58361043260201b60201c565b90506103d2565b826103bc8361049760201b60201c565b5f0190816103ca919061094d565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e051610100514630604051602001610417959493929190610a34565b60405160208183030381529060405280519060200120905090565b5f80829050601f8151111561047e57826040517f305a27a90000000000000000000000000000000000000000000000000000000081526004016104759190610aeb565b60405180910390fd5b80518161048a90610b38565b5f1c175f1b915050919050565b5f819050919050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104c9826104a0565b9050919050565b6104d9816104bf565b82525050565b5f6020820190506104f25f8301846104d0565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561057a57808604811115610556576105556104f8565b5b60018516156105655780820291505b808102905061057385610525565b945061053a565b94509492505050565b5f82610592576001905061064d565b8161059f575f905061064d565b81600181146105b557600281146105bf576105ee565b600191505061064d565b60ff8411156105d1576105d06104f8565b5b8360020a9150848211156105e8576105e76104f8565b5b5061064d565b5060208310610133831016604e8410600b84101617156106235782820a90508381111561061e5761061d6104f8565b5b61064d565b6106308484846001610531565b92509050818404811115610647576106466104f8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61067382610654565b915061067e8361065d565b92506106ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610583565b905092915050565b5f6106bd82610654565b91506106c883610654565b92508282026106d681610654565b915082820484148315176106ed576106ec6104f8565b5b5092915050565b6106fd81610654565b82525050565b5f6020820190506107165f8301846106f4565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061079757607f821691505b6020821081036107aa576107a9610753565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261080c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826107d1565b61081686836107d1565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61085161084c61084784610654565b61082e565b610654565b9050919050565b5f819050919050565b61086a83610837565b61087e61087682610858565b8484546107dd565b825550505050565b5f90565b610892610886565b61089d818484610861565b505050565b5b818110156108c0576108b55f8261088a565b6001810190506108a3565b5050565b601f821115610905576108d6816107b0565b6108df846107c2565b810160208510156108ee578190505b6109026108fa856107c2565b8301826108a2565b50505b505050565b5f82821c905092915050565b5f6109255f198460080261090a565b1980831691505092915050565b5f61093d8383610916565b9150826002028217905092915050565b6109568261071c565b67ffffffffffffffff81111561096f5761096e610726565b5b6109798254610780565b6109848282856108c4565b5f60209050601f8311600181146109b5575f84156109a3578287015190505b6109ad8582610932565b865550610a14565b601f1984166109c3866107b0565b5f5b828110156109ea578489015182556001820191506020850194506020810190506109c5565b86831015610a075784890151610a03601f891682610916565b8355505b6001600288020188555050505b505050505050565b5f819050919050565b610a2e81610a1c565b82525050565b5f60a082019050610a475f830188610a25565b610a546020830187610a25565b610a616040830186610a25565b610a6e60608301856106f4565b610a7b60808301846104d0565b9695505050505050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610abd8261071c565b610ac78185610a85565b9350610ad7818560208601610a95565b610ae081610aa3565b840191505092915050565b5f6020820190508181035f830152610b038184610ab3565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f610b2f8251610a1c565b80915050919050565b5f610b4282610b0b565b82610b4c84610b15565b9050610b5781610b24565b92506020821015610b9757610b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff836020036008026107d1565b831692505b5050919050565b60805160a05160c05160e051610100516101205161014051612c02610bef5f395f61158701525f61154c01525f61169801525f61167701525f61130201525f61135801525f6113810152612c025ff3fe608060405260043610610117575f3560e01c806383f12fec1161009f578063c9567bf911610063578063c9567bf9146103b8578063d505accf146103d6578063dd62ed3e146103fe578063f2fde38b1461043a578063ffb54a99146104625761011e565b806383f12fec146102d057806384b0196e146102f85780638da5cb5b1461032857806395d89b4114610352578063a9059cbb1461037c5761011e565b8063313ce567116100e6578063313ce567146101ee5780633644e5151461021857806370a0823114610242578063715018a61461027e5780637ecebe00146102945761011e565b806306fdde0314610122578063095ea7b31461014c57806318160ddd1461018857806323b872dd146101b25761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b5061013661048c565b6040516101439190611b55565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d9190611c13565b6104c9565b60405161017f9190611c6b565b60405180910390f35b348015610193575f80fd5b5061019c6104df565b6040516101a99190611c93565b60405180910390f35b3480156101bd575f80fd5b506101d860048036038101906101d39190611cac565b610501565b6040516101e59190611c6b565b60405180910390f35b3480156101f9575f80fd5b506102026105a6565b60405161020f9190611d17565b60405180910390f35b348015610223575f80fd5b5061022c6105ae565b6040516102399190611d48565b60405180910390f35b34801561024d575f80fd5b5061026860048036038101906102639190611d61565b6105bc565b6040516102759190611c93565b60405180910390f35b348015610289575f80fd5b50610292610602565b005b34801561029f575f80fd5b506102ba60048036038101906102b59190611d61565b610615565b6040516102c79190611c93565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190611ecc565b610626565b005b348015610303575f80fd5b5061030c6106f1565b60405161031f9796959493929190612026565b60405180910390f35b348015610333575f80fd5b5061033c610796565b60405161034991906120a8565b60405180910390f35b34801561035d575f80fd5b506103666107bd565b6040516103739190611b55565b60405180910390f35b348015610387575f80fd5b506103a2600480360381019061039d9190611c13565b6107fa565b6040516103af9190611c6b565b60405180910390f35b6103c0610810565b6040516103cd91906120a8565b60405180910390f35b3480156103e1575f80fd5b506103fc60048036038101906103f79190612115565b610cb0565b005b348015610409575f80fd5b50610424600480360381019061041f91906121b2565b610df5565b6040516104319190611c93565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190611d61565b610e77565b005b34801561046d575f80fd5b50610476610efb565b6040516104839190611c6b565b60405180910390f35b60606040518060400160405280600581526020017f456c6d6572000000000000000000000000000000000000000000000000000000815250905090565b5f6104d5338484610f0e565b6001905092915050565b5f6012600a6104ee919061234c565b62a037a06104fc9190612396565b905090565b5f61050d8484846110d1565b61059b84338460055f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461059691906123d7565b610f0e565b600190509392505050565b5f6012905090565b5f6105b76112ff565b905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61060a6113b5565b6106135f61143c565b565b5f61061f826114fd565b9050919050565b5f825190505f810361066d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066490612454565b60405180910390fd5b5f82036106af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a6906124bc565b60405180910390fd5b5f5b818110156106eb576106de338583815181106106d0576106cf6124da565b5b6020026020010151856110d1565b80806001019150506106b1565b50505050565b5f6060805f805f6060610702611543565b61070a61157e565b46305f801b5f67ffffffffffffffff81111561072957610728611d90565b5b6040519080825280602002602001820160405280156107575781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f454c4d0000000000000000000000000000000000000000000000000000000000815250905090565b5f6108063384846110d1565b6001905092915050565b5f6108196113b5565b600860149054906101000a900460ff1615610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090612551565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506109043060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6108f1919061234c565b62a037a06108ff9190612396565b610f0e565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561096e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109929190612583565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3c9190612583565b6040518363ffffffff1660e01b8152600401610a599291906125ae565b6020604051808303815f875af1158015610a75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a999190612583565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610b20306105bc565b5f80610b2a610796565b426040518863ffffffff1660e01b8152600401610b4c96959493929190612617565b60606040518083038185885af1158015610b68573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b8d919061268a565b50505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610c2d9291906126da565b6020604051808303815f875af1158015610c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6d919061272b565b506001600860146101000a81548160ff02191690831515021790555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b83421115610cf557836040517f62791302000000000000000000000000000000000000000000000000000000008152600401610cec9190611c93565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610d238c6115b9565b89604051602001610d3996959493929190612756565b6040516020818303038152906040528051906020012090505f610d5b8261160c565b90505f610d6a82878787611625565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dde57808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610dd59291906125ae565b60405180910390fd5b610de98a8a8a610f0e565b50505050505050505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e7f6113b5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610eef575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ee691906120a8565b60405180910390fd5b610ef88161143c565b50565b600860149054906101000a900460ff1681565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390612825565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe1906128b3565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c49190611c93565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113690612941565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a4906129cf565b60405180910390fd5b5f81116111ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e690612a5d565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461123b91906123d7565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461128e9190612a7b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112f29190611c93565b60405180910390a3505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561137a57507f000000000000000000000000000000000000000000000000000000000000000046145b156113a7577f000000000000000000000000000000000000000000000000000000000000000090506113b2565b6113af611653565b90505b90565b6113bd6116e8565b73ffffffffffffffffffffffffffffffffffffffff166113db610796565b73ffffffffffffffffffffffffffffffffffffffff161461143a576113fe6116e8565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161143191906120a8565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606061157960017f00000000000000000000000000000000000000000000000000000000000000006116ef90919063ffffffff16565b905090565b60606115b460027f00000000000000000000000000000000000000000000000000000000000000006116ef90919063ffffffff16565b905090565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f61161e6116186112ff565b8361179c565b9050919050565b5f805f80611635888888886117dc565b92509250925061164582826118c3565b829350505050949350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000046306040516020016116cd959493929190612aae565b60405160208183030381529060405280519060200120905090565b5f33905090565b606060ff5f1b831461170b5761170483611a25565b9050611796565b81805461171790612b2c565b80601f016020809104026020016040519081016040528092919081815260200182805461174390612b2c565b801561178e5780601f106117655761010080835404028352916020019161178e565b820191905f5260205f20905b81548152906001019060200180831161177157829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611818575f6003859250925092506118b9565b5f6001888888886040515f815260200160405260405161183b9493929190612b5c565b6020604051602081039080840390855afa15801561185b573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118ac575f60015f801b935093509350506118b9565b805f805f1b935093509350505b9450945094915050565b5f60038111156118d6576118d5612b9f565b5b8260038111156118e9576118e8612b9f565b5b0315611a21576001600381111561190357611902612b9f565b5b82600381111561191657611915612b9f565b5b0361194d576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561196157611960612b9f565b5b82600381111561197457611973612b9f565b5b036119b857805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016119af9190611c93565b60405180910390fd5b6003808111156119cb576119ca612b9f565b5b8260038111156119de576119dd612b9f565b5b03611a2057806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401611a179190611d48565b60405180910390fd5b5b5050565b60605f611a3183611a97565b90505f602067ffffffffffffffff811115611a4f57611a4e611d90565b5b6040519080825280601f01601f191660200182016040528015611a815781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611adc576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611b2782611ae5565b611b318185611aef565b9350611b41818560208601611aff565b611b4a81611b0d565b840191505092915050565b5f6020820190508181035f830152611b6d8184611b1d565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611baf82611b86565b9050919050565b611bbf81611ba5565b8114611bc9575f80fd5b50565b5f81359050611bda81611bb6565b92915050565b5f819050919050565b611bf281611be0565b8114611bfc575f80fd5b50565b5f81359050611c0d81611be9565b92915050565b5f8060408385031215611c2957611c28611b7e565b5b5f611c3685828601611bcc565b9250506020611c4785828601611bff565b9150509250929050565b5f8115159050919050565b611c6581611c51565b82525050565b5f602082019050611c7e5f830184611c5c565b92915050565b611c8d81611be0565b82525050565b5f602082019050611ca65f830184611c84565b92915050565b5f805f60608486031215611cc357611cc2611b7e565b5b5f611cd086828701611bcc565b9350506020611ce186828701611bcc565b9250506040611cf286828701611bff565b9150509250925092565b5f60ff82169050919050565b611d1181611cfc565b82525050565b5f602082019050611d2a5f830184611d08565b92915050565b5f819050919050565b611d4281611d30565b82525050565b5f602082019050611d5b5f830184611d39565b92915050565b5f60208284031215611d7657611d75611b7e565b5b5f611d8384828501611bcc565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611dc682611b0d565b810181811067ffffffffffffffff82111715611de557611de4611d90565b5b80604052505050565b5f611df7611b75565b9050611e038282611dbd565b919050565b5f67ffffffffffffffff821115611e2257611e21611d90565b5b602082029050602081019050919050565b5f80fd5b5f611e49611e4484611e08565b611dee565b90508083825260208201905060208402830185811115611e6c57611e6b611e33565b5b835b81811015611e955780611e818882611bcc565b845260208401935050602081019050611e6e565b5050509392505050565b5f82601f830112611eb357611eb2611d8c565b5b8135611ec3848260208601611e37565b91505092915050565b5f8060408385031215611ee257611ee1611b7e565b5b5f83013567ffffffffffffffff811115611eff57611efe611b82565b5b611f0b85828601611e9f565b9250506020611f1c85828601611bff565b9150509250929050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611f5a81611f26565b82525050565b611f6981611ba5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611fa181611be0565b82525050565b5f611fb28383611f98565b60208301905092915050565b5f602082019050919050565b5f611fd482611f6f565b611fde8185611f79565b9350611fe983611f89565b805f5b838110156120195781516120008882611fa7565b975061200b83611fbe565b925050600181019050611fec565b5085935050505092915050565b5f60e0820190506120395f83018a611f51565b818103602083015261204b8189611b1d565b9050818103604083015261205f8188611b1d565b905061206e6060830187611c84565b61207b6080830186611f60565b61208860a0830185611d39565b81810360c083015261209a8184611fca565b905098975050505050505050565b5f6020820190506120bb5f830184611f60565b92915050565b6120ca81611cfc565b81146120d4575f80fd5b50565b5f813590506120e5816120c1565b92915050565b6120f481611d30565b81146120fe575f80fd5b50565b5f8135905061210f816120eb565b92915050565b5f805f805f805f60e0888a0312156121305761212f611b7e565b5b5f61213d8a828b01611bcc565b975050602061214e8a828b01611bcc565b965050604061215f8a828b01611bff565b95505060606121708a828b01611bff565b94505060806121818a828b016120d7565b93505060a06121928a828b01612101565b92505060c06121a38a828b01612101565b91505092959891949750929550565b5f80604083850312156121c8576121c7611b7e565b5b5f6121d585828601611bcc565b92505060206121e685828601611bcc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156122725780860481111561224e5761224d6121f0565b5b600185161561225d5780820291505b808102905061226b8561221d565b9450612232565b94509492505050565b5f8261228a5760019050612345565b81612297575f9050612345565b81600181146122ad57600281146122b7576122e6565b6001915050612345565b60ff8411156122c9576122c86121f0565b5b8360020a9150848211156122e0576122df6121f0565b5b50612345565b5060208310610133831016604e8410600b841016171561231b5782820a905083811115612316576123156121f0565b5b612345565b6123288484846001612229565b9250905081840481111561233f5761233e6121f0565b5b81810290505b9392505050565b5f61235682611be0565b915061236183611cfc565b925061238e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461227b565b905092915050565b5f6123a082611be0565b91506123ab83611be0565b92508282026123b981611be0565b915082820484148315176123d0576123cf6121f0565b5b5092915050565b5f6123e182611be0565b91506123ec83611be0565b9250828203905081811115612404576124036121f0565b5b92915050565b7f4e6f2072656365697665727320737065636966696564000000000000000000005f82015250565b5f61243e601683611aef565b91506124498261240a565b602082019050919050565b5f6020820190508181035f83015261246b81612432565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6124a6602083611aef565b91506124b182612472565b602082019050919050565b5f6020820190508181035f8301526124d38161249a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61253b601783611aef565b915061254682612507565b602082019050919050565b5f6020820190508181035f8301526125688161252f565b9050919050565b5f8151905061257d81611bb6565b92915050565b5f6020828403121561259857612597611b7e565b5b5f6125a58482850161256f565b91505092915050565b5f6040820190506125c15f830185611f60565b6125ce6020830184611f60565b9392505050565b5f819050919050565b5f819050919050565b5f6126016125fc6125f7846125d5565b6125de565b611be0565b9050919050565b612611816125e7565b82525050565b5f60c08201905061262a5f830189611f60565b6126376020830188611c84565b6126446040830187612608565b6126516060830186612608565b61265e6080830185611f60565b61266b60a0830184611c84565b979650505050505050565b5f8151905061268481611be9565b92915050565b5f805f606084860312156126a1576126a0611b7e565b5b5f6126ae86828701612676565b93505060206126bf86828701612676565b92505060406126d086828701612676565b9150509250925092565b5f6040820190506126ed5f830185611f60565b6126fa6020830184611c84565b9392505050565b61270a81611c51565b8114612714575f80fd5b50565b5f8151905061272581612701565b92915050565b5f602082840312156127405761273f611b7e565b5b5f61274d84828501612717565b91505092915050565b5f60c0820190506127695f830189611d39565b6127766020830188611f60565b6127836040830187611f60565b6127906060830186611c84565b61279d6080830185611c84565b6127aa60a0830184611c84565b979650505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61280f602483611aef565b915061281a826127b5565b604082019050919050565b5f6020820190508181035f83015261283c81612803565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61289d602283611aef565b91506128a882612843565b604082019050919050565b5f6020820190508181035f8301526128ca81612891565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61292b602583611aef565b9150612936826128d1565b604082019050919050565b5f6020820190508181035f8301526129588161291f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6129b9602383611aef565b91506129c48261295f565b604082019050919050565b5f6020820190508181035f8301526129e6816129ad565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612a47602983611aef565b9150612a52826129ed565b604082019050919050565b5f6020820190508181035f830152612a7481612a3b565b9050919050565b5f612a8582611be0565b9150612a9083611be0565b9250828201905080821115612aa857612aa76121f0565b5b92915050565b5f60a082019050612ac15f830188611d39565b612ace6020830187611d39565b612adb6040830186611d39565b612ae86060830185611c84565b612af56080830184611f60565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b4357607f821691505b602082108103612b5657612b55612aff565b5b50919050565b5f608082019050612b6f5f830187611d39565b612b7c6020830186611d08565b612b896040830185611d39565b612b966060830184611d39565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffdfea26469706673582212204899a5570c3ee883f55fae78c67e3275e3121bbd148cd0d0df3c404d0ad9815764736f6c634300081a0033