{
    "_format": "hh-sol-artifact-1",
    "contractName": "MockERC20Permit",
    "sourceName": "contracts/test/MockERC20Permit.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "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": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "subtractedValue",
                    "type": "uint256"
                }
            ],
            "name": "decreaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "addedValue",
                    "type": "uint256"
                }
            ],
            "name": "increaseAllowance",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "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": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405234801561001057600080fd5b50612719806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c55760003560e01c806306fdde03146100ca578063095ea7b3146100e857806318160ddd1461011857806323b872dd14610136578063313ce567146101665780633644e5151461018457806339509351146101a257806370a08231146101d25780637ecebe00146102025780638129fc1c1461023257806395d89b411461023c578063a457c2d71461025a578063a9059cbb1461028a578063d505accf146102ba578063dd62ed3e146102d6575b600080fd5b6100d2610306565b6040516100df919061160d565b60405180910390f35b61010260048036038101906100fd91906116c8565b610398565b60405161010f9190611723565b60405180910390f35b6101206103bb565b60405161012d919061174d565b60405180910390f35b610150600480360381019061014b9190611768565b6103c5565b60405161015d9190611723565b60405180910390f35b61016e6103f4565b60405161017b91906117d7565b60405180910390f35b61018c6103fd565b604051610199919061180b565b60405180910390f35b6101bc60048036038101906101b791906116c8565b61040c565b6040516101c99190611723565b60405180910390f35b6101ec60048036038101906101e79190611826565b610443565b6040516101f9919061174d565b60405180910390f35b61021c60048036038101906102179190611826565b61048c565b604051610229919061174d565b60405180910390f35b61023a6104dc565b005b6102446106df565b604051610251919061160d565b60405180910390f35b610274600480360381019061026f91906116c8565b610771565b6040516102819190611723565b60405180910390f35b6102a4600480360381019061029f91906116c8565b6107e8565b6040516102b19190611723565b60405180910390f35b6102d460048036038101906102cf91906118ab565b61080b565b005b6102f060048036038101906102eb919061194d565b61094d565b6040516102fd919061174d565b60405180910390f35b606060368054610315906119bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610341906119bc565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b6000806103a36109d4565b90506103b08185856109dc565b600191505092915050565b6000603554905090565b6000806103d06109d4565b90506103dd858285610ba5565b6103e8858585610c31565b60019150509392505050565b60006012905090565b6000610407610eaa565b905090565b6000806104176109d4565b9050610438818585610429858961094d565b6104339190611a1c565b6109dc565b600191505092915050565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006104d5609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610eea565b9050919050565b60008060019054906101000a900460ff1615905080801561050d5750600160008054906101000a900460ff1660ff16105b8061053a575061051c30610ef8565b1580156105395750600160008054906101000a900460ff1660ff16145b5b610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057090611ac2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156105b6576001600060016101000a81548160ff0219169083151502179055505b6105f46040518060400160405280600f81526020017f4d6f636b45524332305065726d69740000000000000000000000000000000000815250610f1b565b6106686040518060400160405280600f81526020017f4d6f636b45524332305065726d697400000000000000000000000000000000008152506040518060400160405280600681526020017f4d45524332300000000000000000000000000000000000000000000000000000815250610fac565b6106836106736109d4565b69d3c21bcecceda100000061101f565b80156106dc5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106d39190611b27565b60405180910390a15b50565b6060603780546106ee906119bc565b80601f016020809104026020016040519081016040528092919081815260200182805461071a906119bc565b80156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b60008061077c6109d4565b9050600061078a828661094d565b9050838110156107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c690611bb4565b60405180910390fd5b6107dc82868684036109dc565b60019250505092915050565b6000806107f36109d4565b9050610800818585610c31565b600191505092915050565b8342111561084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084590611c20565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087d8c611176565b8960405160200161089396959493929190611c4f565b60405160208183030381529060405280519060200120905060006108b6826111d4565b905060006108c6828787876111ee565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90611cfc565b60405180910390fd5b6109418a8a8a6109dc565b50505050505050505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290611d8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190611e20565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b98919061174d565b60405180910390a3505050565b6000610bb1848461094d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c2b5781811015610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490611e8c565b60405180910390fd5b610c2a84848484036109dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790611f1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690611fb0565b60405180910390fd5b610d1a838383611219565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612042565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e91919061174d565b60405180910390a3610ea484848461121e565b50505050565b6000610ee57f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610ed8611223565b610ee061122d565b611237565b905090565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f61906120d4565b60405180910390fd5b610fa9816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611271565b50565b600060019054906101000a900460ff16610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff2906120d4565b60405180910390fd5b816036908161100a91906122c5565b50806037908161101a91906122c5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611085906123e3565b60405180910390fd5b61109a60008383611219565b80603560008282546110ac9190611a1c565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115e919061174d565b60405180910390a36111726000838361121e565b5050565b600080609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506111c381610eea565b91506111ce816112ec565b50919050565b60006111e76111e1610eaa565b83611302565b9050919050565b60008060006111ff87878787611335565b9150915061120c81611417565b8192505050949350505050565b505050565b505050565b6000606554905090565b6000606654905090565b60008383834630604051602001611252959493929190612403565b6040516020818303038152906040528051906020012090509392505050565b600060019054906101000a900460ff166112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906120d4565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b6001816000016000828254019250508190555050565b600082826040516020016113179291906124ce565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561137057600060039150915061140e565b6000600187878787604051600081526020016040526040516113959493929190612505565b6020604051602081039080840390855afa1580156113b7573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114055760006001925092505061140e565b80600092509250505b94509492505050565b6000600481111561142b5761142a61254a565b5b81600481111561143e5761143d61254a565b5b031561157a57600160048111156114585761145761254a565b5b81600481111561146b5761146a61254a565b5b036114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a2906125c5565b60405180910390fd5b600260048111156114bf576114be61254a565b5b8160048111156114d2576114d161254a565b5b03611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990612631565b60405180910390fd5b600360048111156115265761152561254a565b5b8160048111156115395761153861254a565b5b03611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906126c3565b60405180910390fd5b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156115b757808201518184015260208101905061159c565b60008484015250505050565b6000601f19601f8301169050919050565b60006115df8261157d565b6115e98185611588565b93506115f9818560208601611599565b611602816115c3565b840191505092915050565b6000602082019050818103600083015261162781846115d4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061165f82611634565b9050919050565b61166f81611654565b811461167a57600080fd5b50565b60008135905061168c81611666565b92915050565b6000819050919050565b6116a581611692565b81146116b057600080fd5b50565b6000813590506116c28161169c565b92915050565b600080604083850312156116df576116de61162f565b5b60006116ed8582860161167d565b92505060206116fe858286016116b3565b9150509250929050565b60008115159050919050565b61171d81611708565b82525050565b60006020820190506117386000830184611714565b92915050565b61174781611692565b82525050565b6000602082019050611762600083018461173e565b92915050565b6000806000606084860312156117815761178061162f565b5b600061178f8682870161167d565b93505060206117a08682870161167d565b92505060406117b1868287016116b3565b9150509250925092565b600060ff82169050919050565b6117d1816117bb565b82525050565b60006020820190506117ec60008301846117c8565b92915050565b6000819050919050565b611805816117f2565b82525050565b600060208201905061182060008301846117fc565b92915050565b60006020828403121561183c5761183b61162f565b5b600061184a8482850161167d565b91505092915050565b61185c816117bb565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b611888816117f2565b811461189357600080fd5b50565b6000813590506118a58161187f565b92915050565b600080600080600080600060e0888a0312156118ca576118c961162f565b5b60006118d88a828b0161167d565b97505060206118e98a828b0161167d565b96505060406118fa8a828b016116b3565b955050606061190b8a828b016116b3565b945050608061191c8a828b0161186a565b93505060a061192d8a828b01611896565b92505060c061193e8a828b01611896565b91505092959891949750929550565b600080604083850312156119645761196361162f565b5b60006119728582860161167d565b92505060206119838582860161167d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119d457607f821691505b6020821081036119e7576119e661198d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a2782611692565b9150611a3283611692565b9250828201905080821115611a4a57611a496119ed565b5b92915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000611aac602e83611588565b9150611ab782611a50565b604082019050919050565b60006020820190508181036000830152611adb81611a9f565b9050919050565b6000819050919050565b6000819050919050565b6000611b11611b0c611b0784611ae2565b611aec565b6117bb565b9050919050565b611b2181611af6565b82525050565b6000602082019050611b3c6000830184611b18565b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b9e602583611588565b9150611ba982611b42565b604082019050919050565b60006020820190508181036000830152611bcd81611b91565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000611c0a601d83611588565b9150611c1582611bd4565b602082019050919050565b60006020820190508181036000830152611c3981611bfd565b9050919050565b611c4981611654565b82525050565b600060c082019050611c6460008301896117fc565b611c716020830188611c40565b611c7e6040830187611c40565b611c8b606083018661173e565b611c98608083018561173e565b611ca560a083018461173e565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000611ce6601e83611588565b9150611cf182611cb0565b602082019050919050565b60006020820190508181036000830152611d1581611cd9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d78602483611588565b9150611d8382611d1c565b604082019050919050565b60006020820190508181036000830152611da781611d6b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0a602283611588565b9150611e1582611dae565b604082019050919050565b60006020820190508181036000830152611e3981611dfd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e76601d83611588565b9150611e8182611e40565b602082019050919050565b60006020820190508181036000830152611ea581611e69565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f08602583611588565b9150611f1382611eac565b604082019050919050565b60006020820190508181036000830152611f3781611efb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9a602383611588565b9150611fa582611f3e565b604082019050919050565b60006020820190508181036000830152611fc981611f8d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061202c602683611588565b915061203782611fd0565b604082019050919050565b6000602082019050818103600083015261205b8161201f565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006120be602b83611588565b91506120c982612062565b604082019050919050565b600060208201905081810360008301526120ed816120b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612148565b61218f8683612148565b95508019841693508086168417925050509392505050565b60006121c26121bd6121b884611692565b611aec565b611692565b9050919050565b6000819050919050565b6121dc836121a7565b6121f06121e8826121c9565b848454612155565b825550505050565b600090565b6122056121f8565b6122108184846121d3565b505050565b5b81811015612234576122296000826121fd565b600181019050612216565b5050565b601f8211156122795761224a81612123565b61225384612138565b81016020851015612262578190505b61227661226e85612138565b830182612215565b50505b505050565b600082821c905092915050565b600061229c6000198460080261227e565b1980831691505092915050565b60006122b5838361228b565b9150826002028217905092915050565b6122ce8261157d565b67ffffffffffffffff8111156122e7576122e66120f4565b5b6122f182546119bc565b6122fc828285612238565b600060209050601f83116001811461232f576000841561231d578287015190505b61232785826122a9565b86555061238f565b601f19841661233d86612123565b60005b8281101561236557848901518255600182019150602085019450602081019050612340565b86831015612382578489015161237e601f89168261228b565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006123cd601f83611588565b91506123d882612397565b602082019050919050565b600060208201905081810360008301526123fc816123c0565b9050919050565b600060a08201905061241860008301886117fc565b61242560208301876117fc565b61243260408301866117fc565b61243f606083018561173e565b61244c6080830184611c40565b9695505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000612497600283612456565b91506124a282612461565b600282019050919050565b6000819050919050565b6124c86124c3826117f2565b6124ad565b82525050565b60006124d98261248a565b91506124e582856124b7565b6020820191506124f582846124b7565b6020820191508190509392505050565b600060808201905061251a60008301876117fc565b61252760208301866117c8565b61253460408301856117fc565b61254160608301846117fc565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006125af601883611588565b91506125ba82612579565b602082019050919050565b600060208201905081810360008301526125de816125a2565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061261b601f83611588565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006126ad602283611588565b91506126b882612651565b604082019050919050565b600060208201905081810360008301526126dc816126a0565b905091905056fea2646970667358221220d0ff4920c865ca917809b5a4e0bca2f9063093ecf56b81cfdf42daf4ec4d250264736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100c55760003560e01c806306fdde03146100ca578063095ea7b3146100e857806318160ddd1461011857806323b872dd14610136578063313ce567146101665780633644e5151461018457806339509351146101a257806370a08231146101d25780637ecebe00146102025780638129fc1c1461023257806395d89b411461023c578063a457c2d71461025a578063a9059cbb1461028a578063d505accf146102ba578063dd62ed3e146102d6575b600080fd5b6100d2610306565b6040516100df919061160d565b60405180910390f35b61010260048036038101906100fd91906116c8565b610398565b60405161010f9190611723565b60405180910390f35b6101206103bb565b60405161012d919061174d565b60405180910390f35b610150600480360381019061014b9190611768565b6103c5565b60405161015d9190611723565b60405180910390f35b61016e6103f4565b60405161017b91906117d7565b60405180910390f35b61018c6103fd565b604051610199919061180b565b60405180910390f35b6101bc60048036038101906101b791906116c8565b61040c565b6040516101c99190611723565b60405180910390f35b6101ec60048036038101906101e79190611826565b610443565b6040516101f9919061174d565b60405180910390f35b61021c60048036038101906102179190611826565b61048c565b604051610229919061174d565b60405180910390f35b61023a6104dc565b005b6102446106df565b604051610251919061160d565b60405180910390f35b610274600480360381019061026f91906116c8565b610771565b6040516102819190611723565b60405180910390f35b6102a4600480360381019061029f91906116c8565b6107e8565b6040516102b19190611723565b60405180910390f35b6102d460048036038101906102cf91906118ab565b61080b565b005b6102f060048036038101906102eb919061194d565b61094d565b6040516102fd919061174d565b60405180910390f35b606060368054610315906119bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610341906119bc565b801561038e5780601f106103635761010080835404028352916020019161038e565b820191906000526020600020905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b6000806103a36109d4565b90506103b08185856109dc565b600191505092915050565b6000603554905090565b6000806103d06109d4565b90506103dd858285610ba5565b6103e8858585610c31565b60019150509392505050565b60006012905090565b6000610407610eaa565b905090565b6000806104176109d4565b9050610438818585610429858961094d565b6104339190611a1c565b6109dc565b600191505092915050565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006104d5609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610eea565b9050919050565b60008060019054906101000a900460ff1615905080801561050d5750600160008054906101000a900460ff1660ff16105b8061053a575061051c30610ef8565b1580156105395750600160008054906101000a900460ff1660ff16145b5b610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057090611ac2565b60405180910390fd5b60016000806101000a81548160ff021916908360ff16021790555080156105b6576001600060016101000a81548160ff0219169083151502179055505b6105f46040518060400160405280600f81526020017f4d6f636b45524332305065726d69740000000000000000000000000000000000815250610f1b565b6106686040518060400160405280600f81526020017f4d6f636b45524332305065726d697400000000000000000000000000000000008152506040518060400160405280600681526020017f4d45524332300000000000000000000000000000000000000000000000000000815250610fac565b6106836106736109d4565b69d3c21bcecceda100000061101f565b80156106dc5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860016040516106d39190611b27565b60405180910390a15b50565b6060603780546106ee906119bc565b80601f016020809104026020016040519081016040528092919081815260200182805461071a906119bc565b80156107675780601f1061073c57610100808354040283529160200191610767565b820191906000526020600020905b81548152906001019060200180831161074a57829003601f168201915b5050505050905090565b60008061077c6109d4565b9050600061078a828661094d565b9050838110156107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c690611bb4565b60405180910390fd5b6107dc82868684036109dc565b60019250505092915050565b6000806107f36109d4565b9050610800818585610c31565b600191505092915050565b8342111561084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084590611c20565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087d8c611176565b8960405160200161089396959493929190611c4f565b60405160208183030381529060405280519060200120905060006108b6826111d4565b905060006108c6828787876111ee565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092d90611cfc565b60405180910390fd5b6109418a8a8a6109dc565b50505050505050505050565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4290611d8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190611e20565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b98919061174d565b60405180910390a3505050565b6000610bb1848461094d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c2b5781811015610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1490611e8c565b60405180910390fd5b610c2a84848484036109dc565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790611f1e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0690611fb0565b60405180910390fd5b610d1a838383611219565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9890612042565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e91919061174d565b60405180910390a3610ea484848461121e565b50505050565b6000610ee57f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610ed8611223565b610ee061122d565b611237565b905090565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f61906120d4565b60405180910390fd5b610fa9816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250611271565b50565b600060019054906101000a900460ff16610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff2906120d4565b60405180910390fd5b816036908161100a91906122c5565b50806037908161101a91906122c5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611085906123e3565b60405180910390fd5b61109a60008383611219565b80603560008282546110ac9190611a1c565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161115e919061174d565b60405180910390a36111726000838361121e565b5050565b600080609960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506111c381610eea565b91506111ce816112ec565b50919050565b60006111e76111e1610eaa565b83611302565b9050919050565b60008060006111ff87878787611335565b9150915061120c81611417565b8192505050949350505050565b505050565b505050565b6000606554905090565b6000606654905090565b60008383834630604051602001611252959493929190612403565b6040516020818303038152906040528051906020012090509392505050565b600060019054906101000a900460ff166112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b7906120d4565b60405180910390fd5b600082805190602001209050600082805190602001209050816065819055508060668190555050505050565b6001816000016000828254019250508190555050565b600082826040516020016113179291906124ce565b60405160208183030381529060405280519060200120905092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c111561137057600060039150915061140e565b6000600187878787604051600081526020016040526040516113959493929190612505565b6020604051602081039080840390855afa1580156113b7573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114055760006001925092505061140e565b80600092509250505b94509492505050565b6000600481111561142b5761142a61254a565b5b81600481111561143e5761143d61254a565b5b031561157a57600160048111156114585761145761254a565b5b81600481111561146b5761146a61254a565b5b036114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a2906125c5565b60405180910390fd5b600260048111156114bf576114be61254a565b5b8160048111156114d2576114d161254a565b5b03611512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150990612631565b60405180910390fd5b600360048111156115265761152561254a565b5b8160048111156115395761153861254a565b5b03611579576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611570906126c3565b60405180910390fd5b5b50565b600081519050919050565b600082825260208201905092915050565b60005b838110156115b757808201518184015260208101905061159c565b60008484015250505050565b6000601f19601f8301169050919050565b60006115df8261157d565b6115e98185611588565b93506115f9818560208601611599565b611602816115c3565b840191505092915050565b6000602082019050818103600083015261162781846115d4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061165f82611634565b9050919050565b61166f81611654565b811461167a57600080fd5b50565b60008135905061168c81611666565b92915050565b6000819050919050565b6116a581611692565b81146116b057600080fd5b50565b6000813590506116c28161169c565b92915050565b600080604083850312156116df576116de61162f565b5b60006116ed8582860161167d565b92505060206116fe858286016116b3565b9150509250929050565b60008115159050919050565b61171d81611708565b82525050565b60006020820190506117386000830184611714565b92915050565b61174781611692565b82525050565b6000602082019050611762600083018461173e565b92915050565b6000806000606084860312156117815761178061162f565b5b600061178f8682870161167d565b93505060206117a08682870161167d565b92505060406117b1868287016116b3565b9150509250925092565b600060ff82169050919050565b6117d1816117bb565b82525050565b60006020820190506117ec60008301846117c8565b92915050565b6000819050919050565b611805816117f2565b82525050565b600060208201905061182060008301846117fc565b92915050565b60006020828403121561183c5761183b61162f565b5b600061184a8482850161167d565b91505092915050565b61185c816117bb565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b611888816117f2565b811461189357600080fd5b50565b6000813590506118a58161187f565b92915050565b600080600080600080600060e0888a0312156118ca576118c961162f565b5b60006118d88a828b0161167d565b97505060206118e98a828b0161167d565b96505060406118fa8a828b016116b3565b955050606061190b8a828b016116b3565b945050608061191c8a828b0161186a565b93505060a061192d8a828b01611896565b92505060c061193e8a828b01611896565b91505092959891949750929550565b600080604083850312156119645761196361162f565b5b60006119728582860161167d565b92505060206119838582860161167d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806119d457607f821691505b6020821081036119e7576119e661198d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a2782611692565b9150611a3283611692565b9250828201905080821115611a4a57611a496119ed565b5b92915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000611aac602e83611588565b9150611ab782611a50565b604082019050919050565b60006020820190508181036000830152611adb81611a9f565b9050919050565b6000819050919050565b6000819050919050565b6000611b11611b0c611b0784611ae2565b611aec565b6117bb565b9050919050565b611b2181611af6565b82525050565b6000602082019050611b3c6000830184611b18565b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611b9e602583611588565b9150611ba982611b42565b604082019050919050565b60006020820190508181036000830152611bcd81611b91565b9050919050565b7f45524332305065726d69743a206578706972656420646561646c696e65000000600082015250565b6000611c0a601d83611588565b9150611c1582611bd4565b602082019050919050565b60006020820190508181036000830152611c3981611bfd565b9050919050565b611c4981611654565b82525050565b600060c082019050611c6460008301896117fc565b611c716020830188611c40565b611c7e6040830187611c40565b611c8b606083018661173e565b611c98608083018561173e565b611ca560a083018461173e565b979650505050505050565b7f45524332305065726d69743a20696e76616c6964207369676e61747572650000600082015250565b6000611ce6601e83611588565b9150611cf182611cb0565b602082019050919050565b60006020820190508181036000830152611d1581611cd9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d78602483611588565b9150611d8382611d1c565b604082019050919050565b60006020820190508181036000830152611da781611d6b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e0a602283611588565b9150611e1582611dae565b604082019050919050565b60006020820190508181036000830152611e3981611dfd565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611e76601d83611588565b9150611e8182611e40565b602082019050919050565b60006020820190508181036000830152611ea581611e69565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611f08602583611588565b9150611f1382611eac565b604082019050919050565b60006020820190508181036000830152611f3781611efb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611f9a602383611588565b9150611fa582611f3e565b604082019050919050565b60006020820190508181036000830152611fc981611f8d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061202c602683611588565b915061203782611fd0565b604082019050919050565b6000602082019050818103600083015261205b8161201f565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006120be602b83611588565b91506120c982612062565b604082019050919050565b600060208201905081810360008301526120ed816120b1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026121857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612148565b61218f8683612148565b95508019841693508086168417925050509392505050565b60006121c26121bd6121b884611692565b611aec565b611692565b9050919050565b6000819050919050565b6121dc836121a7565b6121f06121e8826121c9565b848454612155565b825550505050565b600090565b6122056121f8565b6122108184846121d3565b505050565b5b81811015612234576122296000826121fd565b600181019050612216565b5050565b601f8211156122795761224a81612123565b61225384612138565b81016020851015612262578190505b61227661226e85612138565b830182612215565b50505b505050565b600082821c905092915050565b600061229c6000198460080261227e565b1980831691505092915050565b60006122b5838361228b565b9150826002028217905092915050565b6122ce8261157d565b67ffffffffffffffff8111156122e7576122e66120f4565b5b6122f182546119bc565b6122fc828285612238565b600060209050601f83116001811461232f576000841561231d578287015190505b61232785826122a9565b86555061238f565b601f19841661233d86612123565b60005b8281101561236557848901518255600182019150602085019450602081019050612340565b86831015612382578489015161237e601f89168261228b565b8355505b6001600288020188555050505b505050505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006123cd601f83611588565b91506123d882612397565b602082019050919050565b600060208201905081810360008301526123fc816123c0565b9050919050565b600060a08201905061241860008301886117fc565b61242560208301876117fc565b61243260408301866117fc565b61243f606083018561173e565b61244c6080830184611c40565b9695505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b6000612497600283612456565b91506124a282612461565b600282019050919050565b6000819050919050565b6124c86124c3826117f2565b6124ad565b82525050565b60006124d98261248a565b91506124e582856124b7565b6020820191506124f582846124b7565b6020820191508190509392505050565b600060808201905061251a60008301876117fc565b61252760208301866117c8565b61253460408301856117fc565b61254160608301846117fc565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006125af601883611588565b91506125ba82612579565b602082019050919050565b600060208201905081810360008301526125de816125a2565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061261b601f83611588565b9150612626826125e5565b602082019050919050565b6000602082019050818103600083015261264a8161260e565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b60006126ad602283611588565b91506126b882612651565b604082019050919050565b600060208201905081810360008301526126dc816126a0565b905091905056fea2646970667358221220d0ff4920c865ca917809b5a4e0bca2f9063093ecf56b81cfdf42daf4ec4d250264736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
