{
    "contractName": "MetaTxToken",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_name",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "_symbol",
                    "type": "string"
                },
                {
                    "internalType": "uint8",
                    "name": "_decimals",
                    "type": "uint8"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Burn",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "authority",
                    "type": "address"
                }
            ],
            "name": "LogSetAuthority",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "LogSetOwner",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address payable",
                    "name": "relayerAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "functionSignature",
                    "type": "bytes"
                }
            ],
            "name": "MetaTransactionExecuted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Mint",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DOMAIN_SEPARATOR",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "PERMIT_TYPEHASH",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "authority",
            "outputs": [
                {
                    "internalType": "contract DSAuthority",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "_payload",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32",
                    "name": "_sigR",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "_sigS",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint8",
                    "name": "_sigV",
                    "type": "uint8"
                }
            ],
            "name": "executeMetaTransaction",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "getMetatransactionNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "locked",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "guy",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "mint",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "mint",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                }
            ],
            "name": "nonces",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "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": [
                {
                    "internalType": "contract DSAuthority",
                    "name": "authority_",
                    "type": "address"
                }
            ],
            "name": "setAuthority",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner_",
                    "type": "address"
                }
            ],
            "name": "setOwner",
            "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": "dst",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "src",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "dst",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "wad",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unlock",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_user",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "_nonce",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "_chainId",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "_payload",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32",
                    "name": "_sigR",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "_sigS",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint8",
                    "name": "_sigV",
                    "type": "uint8"
                }
            ],
            "name": "verify",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x60c060405234801561001057600080fd5b5060405161205938038061205983398101604081905261002f9161030c565b60008060018161003d6101ab565b6001600160a01b031681526020810191909152604001600090812091909155556100656101ab565b600480546001600160a01b0319166001600160a01b039290921691909117905561008d6101ab565b6001600160a01b03167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a260066100ce8482610414565b5060056100db8382610414565b5060ff81166080526007805460ff1916600117905560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90610123906006906104d3565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060a0525061054992505050565b60003633301480156101be575060348110155b1561024757600080368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505082810160131901519091507f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e881146102365733935050505090565b5001516001600160a01b0316919050565b3391505090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261027557600080fd5b81516001600160401b038082111561028f5761028f61024e565b604051601f8301601f19908116603f011681019082821181831017156102b7576102b761024e565b81604052838152602092508660208588010111156102d457600080fd5b600091505b838210156102f657858201830151818301840152908201906102d9565b6000602085830101528094505050505092915050565b60008060006060848603121561032157600080fd5b83516001600160401b038082111561033857600080fd5b61034487838801610264565b9450602086015191508082111561035a57600080fd5b5061036786828701610264565b925050604084015160ff8116811461037e57600080fd5b809150509250925092565b600181811c9082168061039d57607f821691505b6020821081036103bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561040f576000816000526020600020601f850160051c810160208610156103ec5750805b601f850160051c820191505b8181101561040b578281556001016103f8565b5050505b505050565b81516001600160401b0381111561042d5761042d61024e565b6104418161043b8454610389565b846103c3565b602080601f831160018114610476576000841561045e5750858301515b600019600386901b1c1916600185901b17855561040b565b600085815260208120601f198616915b828110156104a557888601518255948401946001909101908401610486565b50858210156104c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546104e181610389565b600182811680156104f9576001811461050e5761053d565b60ff198416875282151583028701945061053d565b8760005260208060002060005b858110156105345781548a82015290840190820161051b565b50505082870194505b50929695505050505050565b60805160a051611ae4610575600039600081816102e10152610f890152600061029b0152611ae46000f3fe6080604052600436106101815760003560e01c80637a9e5e4b116100d1578063a69df4b51161008a578063bf7e214f11610064578063bf7e214f146104b1578063cf309012146104d1578063d505accf146104eb578063dd62ed3e1461050b57600080fd5b8063a69df4b51461047c578063a9059cbb14610491578063b3eac1d8146103b957600080fd5b80637a9e5e4b146103995780637ecebe00146103b95780638da5cb5b146103ef57806395d89b41146104275780639dc29fac1461043c578063a0712d681461045c57600080fd5b806330adf81f1161013e57806340c10f191161011857806340c10f191461030357806342966c68146103235780636281133d1461034357806370a082311461036357600080fd5b806330adf81f14610255578063313ce567146102895780633644e515146102cf57600080fd5b806306fdde0314610186578063095ea7b3146101b15780630c53c51c146101e157806313af4035146101f457806318160ddd1461021657806323b872dd14610235575b600080fd5b34801561019257600080fd5b5061019b610551565b6040516101a891906115b2565b60405180910390f35b3480156101bd57600080fd5b506101d16101cc3660046115da565b6105df565b60405190151581526020016101a8565b61019b6101ef3660046116bf565b610672565b34801561020057600080fd5b5061021461020f366004611733565b61085b565b005b34801561022257600080fd5b506000545b6040519081526020016101a8565b34801561024157600080fd5b506101d1610250366004611750565b6108de565b34801561026157600080fd5b506102277f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561029557600080fd5b506102bd7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101a8565b3480156102db57600080fd5b506102277f000000000000000000000000000000000000000000000000000000000000000081565b34801561030f57600080fd5b5061021461031e3660046115da565b610952565b34801561032f57600080fd5b5061021461033e366004611791565b610a41565b34801561034f57600080fd5b506101d161035e3660046117aa565b610a55565b34801561036f57600080fd5b5061022761037e366004611733565b6001600160a01b031660009081526001602052604090205490565b3480156103a557600080fd5b506102146103b4366004611733565b610ba9565b3480156103c557600080fd5b506102276103d4366004611733565b6001600160a01b031660009081526008602052604090205490565b3480156103fb57600080fd5b5060045461040f906001600160a01b031681565b6040516001600160a01b0390911681526020016101a8565b34801561043357600080fd5b5061019b610c1a565b34801561044857600080fd5b506102146104573660046115da565b610c27565b34801561046857600080fd5b50610214610477366004611791565b610e1e565b34801561048857600080fd5b50610214610e56565b34801561049d57600080fd5b506101d16104ac3660046115da565b610e89565b3480156104bd57600080fd5b5060035461040f906001600160a01b031681565b3480156104dd57600080fd5b506007546101d19060ff1681565b3480156104f757600080fd5b50610214610506366004611831565b610ea4565b34801561051757600080fd5b5061022761052636600461189f565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6006805461055e906118d8565b80601f016020809104026020016040519081016040528092919081815260200182805461058a906118d8565b80156105d75780601f106105ac576101008083540402835291602001916105d7565b820191906000526020600020905b8154815290600101906020018083116105ba57829003601f168201915b505050505081565b600081600260006105ee611193565b6001600160a01b0390811682526020808301939093526040918201600090812091881680825291909352912091909155610626611193565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161066091815260200190565b60405180910390a35060015b92915050565b60606106a186610697886001600160a01b031660009081526008602052604090205490565b4688888888610a55565b6107045760405162461bcd60e51b815260206004820152602960248201527f6d6574617472616e73616374696f6e2d7369676e65722d7369676e617475726560448201526805adad2e6dac2e8c6d60bb1b60648201526084015b60405180910390fd5b61070d86611236565b600080306001600160a01b0316877f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e88a60405160200161074f93929190611912565b60408051601f19818403018152908290526107699161194b565b6000604051808303816000865af19150503d80600081146107a6576040519150601f19603f3d011682016040523d82523d6000602084013e6107ab565b606091505b50915091508161080e5760405162461bcd60e51b815260206004820152602860248201527f636f6c6f6e792d6d65746174782d66756e6374696f6e2d63616c6c2d756e737560448201526718d8d95cdcd99d5b60c21b60648201526084016106fb565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b88610838611193565b8960405161084893929190611967565b60405180910390a1979650505050505050565b610878610866611193565b6000356001600160e01b031916611262565b6108945760405162461bcd60e51b81526004016106fb9061199c565b600480546001600160a01b0319166001600160a01b0383169081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60075460009060ff161561093f576108f7610866611193565b61093f5760405162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b60448201526064016106fb565b61094a84848461133d565b949350505050565b61095d610866611193565b6109795760405162461bcd60e51b81526004016106fb9061199c565b6001600160a01b038216600090815260016020526040812080548392906109a19084906119e0565b92505081905550806000808282546109b991906119e0565b90915550506040518181526001600160a01b038316907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859060200160405180910390a26040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b610a52610a4c611193565b82610c27565b50565b600080610ad288308989604051602001610a7294939291906119f3565b60408051601f1981840301815282825280516020918201207f19457468657265756d205369676e6564204d6573736167653a0a33320000000084830152603c8085019190915282518085039091018152605c909301909152815191012090565b6040805160008082526020820180845284905260ff87169282019290925260608101889052608081018790529192509060019060a0016020604051602081039080840390855afa158015610b2a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610b8d5760405162461bcd60e51b815260206004820152601f60248201527f636f6c6f6e792d6d65746174782d696e76616c69642d7369676e61747572650060448201526064016106fb565b6001600160a01b038a8116911614915050979650505050505050565b610bb4610866611193565b610bd05760405162461bcd60e51b81526004016106fb9061199c565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada490600090a250565b6005805461055e906118d8565b610c2f611193565b6001600160a01b0316826001600160a01b031614610d2f576001600160a01b03821660009081526002602052604081208291610c69611193565b6001600160a01b03166001600160a01b03168152602001908152602001600020541015610cd85760405162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000060448201526064016106fb565b6001600160a01b03821660009081526002602052604081208291610cfa611193565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d299190611a39565b90915550505b6001600160a01b038216600090815260016020526040902054811115610d975760405162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000060448201526064016106fb565b6001600160a01b03821660009081526001602052604081208054839290610dbf908490611a39565b9250508190555080600080828254610dd79190611a39565b90915550506040518181526001600160a01b038316907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59060200160405180910390a25050565b610e29610866611193565b610e455760405162461bcd60e51b81526004016106fb9061199c565b610a52610e50611193565b82610952565b610e61610866611193565b610e7d5760405162461bcd60e51b81526004016106fb9061199c565b6007805460ff19169055565b6000610e9d610e96611193565b84846108de565b9392505050565b60075460ff1615610f0257610eba610866611193565b610f025760405162461bcd60e51b815260206004820152601960248201527818dbdb1bdb9e4b5d1bdad95b8b5d5b985d5d1a1bdc9a5cd959603a1b60448201526064016106fb565b42841015610f525760405162461bcd60e51b815260206004820152601d60248201527f636f6c6f6e792d746f6b656e2d657870697265642d646561646c696e6500000060448201526064016106fb565b6040805180820182526002815261190160f01b6020808301919091526001600160a01b038a166000908152600890915291822080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c9188610fdb83611a4c565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012060405160200161103f93929190611a65565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156110aa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906110e05750886001600160a01b0316816001600160a01b0316145b61112c5760405162461bcd60e51b815260206004820152601e60248201527f636f6c6f6e792d746f6b656e2d696e76616c69642d7369676e6174757265000060448201526064016106fb565b6001600160a01b038981166000818152600260209081526040808320948d16808452948252918290208b905590518a81527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60003633301480156111a6575060348110155b1561122f57600080368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505082810160131901519091507f02bcc191e283bfba76a1369ec8ba06566f33010645097c104c312753e04935e8811461121e5733935050505090565b5001516001600160a01b0316919050565b3391505090565b6001600160a01b038116600090815260086020526040812080549161125a83611a4c565b919050555050565b6000306001600160a01b0384160361127c5750600161066c565b6004546001600160a01b039081169084160361129a5750600161066c565b6003546001600160a01b03166112b25750600061066c565b60035460405163b700961360e01b81526001600160a01b0385811660048301523060248301526001600160e01b0319851660448301529091169063b700961390606401602060405180830381865afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113369190611a8c565b905061066c565b6000611347611193565b6001600160a01b0316846001600160a01b031614611447576001600160a01b03841660009081526002602052604081208391611381611193565b6001600160a01b03166001600160a01b031681526020019081526020016000205410156113f05760405162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c000060448201526064016106fb565b6001600160a01b03841660009081526002602052604081208391611412611193565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546114419190611a39565b90915550505b6001600160a01b0384166000908152600160205260409020548211156114af5760405162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e636500000060448201526064016106fb565b6001600160a01b038416600090815260016020526040812080548492906114d7908490611a39565b90915550506001600160a01b038316600090815260016020526040812080548492906115049084906119e0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161155091815260200190565b60405180910390a35060019392505050565b60005b8381101561157d578181015183820152602001611565565b50506000910152565b6000815180845261159e816020860160208601611562565b601f01601f19169290920160200192915050565b602081526000610e9d6020830184611586565b6001600160a01b0381168114610a5257600080fd5b600080604083850312156115ed57600080fd5b82356115f8816115c5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261162d57600080fd5b813567ffffffffffffffff8082111561164857611648611606565b604051601f8301601f19908116603f0116810190828211818310171561167057611670611606565b8160405283815286602085880101111561168957600080fd5b836020870160208301376000602085830101528094505050505092915050565b803560ff811681146116ba57600080fd5b919050565b600080600080600060a086880312156116d757600080fd5b85356116e2816115c5565b9450602086013567ffffffffffffffff8111156116fe57600080fd5b61170a8882890161161c565b9450506040860135925060608601359150611727608087016116a9565b90509295509295909350565b60006020828403121561174557600080fd5b8135610e9d816115c5565b60008060006060848603121561176557600080fd5b8335611770816115c5565b92506020840135611780816115c5565b929592945050506040919091013590565b6000602082840312156117a357600080fd5b5035919050565b600080600080600080600060e0888a0312156117c557600080fd5b87356117d0816115c5565b96506020880135955060408801359450606088013567ffffffffffffffff8111156117fa57600080fd5b6118068a828b0161161c565b9450506080880135925060a0880135915061182360c089016116a9565b905092959891949750929550565b600080600080600080600060e0888a03121561184c57600080fd5b8735611857816115c5565b96506020880135611867816115c5565b95506040880135945060608801359350611883608089016116a9565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156118b257600080fd5b82356118bd816115c5565b915060208301356118cd816115c5565b809150509250929050565b600181811c908216806118ec57607f821691505b60208210810361190c57634e487b7160e01b600052602260045260246000fd5b50919050565b60008451611924818460208901611562565b919091019283525060601b6bffffffffffffffffffffffff19166020820152603401919050565b6000825161195d818460208701611562565b9190910192915050565b6001600160a01b0384811682528316602082015260606040820181905260009061199390830184611586565b95945050505050565b602080825260149082015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561066c5761066c6119ca565b8481526bffffffffffffffffffffffff198460601b16602082015282603482015260008251611a29816054850160208701611562565b9190910160540195945050505050565b8181038181111561066c5761066c6119ca565b600060018201611a5e57611a5e6119ca565b5060010190565b60008451611a77818460208901611562565b91909101928352506020820152604001919050565b600060208284031215611a9e57600080fd5b81518015158114610e9d57600080fdfea26469706673582212207a2e26845af2fe425fbad6b846e23f03aed61e8b37f1083e7b67aa26da68f8a764736f6c63430008190033"
}