{
  "_format": "hh-sol-artifact-1",
  "contractName": "MasterChef",
  "sourceName": "contracts/MasterChef.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract TattooToken",
          "name": "_tattoo",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_devaddr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tattooPerBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_startBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_bonusEndBlock",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "lpToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "withUpdate",
          "type": "bool"
        }
      ],
      "name": "Add",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EmergencyWithdraw",
      "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": "uint256",
          "name": "pid",
          "type": "uint256"
        }
      ],
      "name": "UpdatePool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BONUS_MULTIPLIER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IERC20",
          "name": "_lpToken",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_withUpdate",
          "type": "bool"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bonusEndBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_devaddr",
          "type": "address"
        }
      ],
      "name": "dev",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "devaddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "emergencyWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_from",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_to",
          "type": "uint256"
        }
      ],
      "name": "getMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "massUpdatePools",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "migrator",
      "outputs": [
        {
          "internalType": "contract IMigratorChef",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "pendingTattoo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolInfo",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastRewardBlock",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accTattooPerShare",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "_withUpdate",
          "type": "bool"
        }
      ],
      "name": "set",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IMigratorChef",
          "name": "_migrator",
          "type": "address"
        }
      ],
      "name": "setMigrator",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tattoo",
      "outputs": [
        {
          "internalType": "contract TattooToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tattooPerBlock",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAllocPoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        }
      ],
      "name": "updatePool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052600060085534801561001557600080fd5b50604051611dc4380380611dc4833981810160405260a081101561003857600080fd5b5080516020820151604083015160608401516080909401519293919290919060006100616100e9565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039687166001600160a01b03199182161790915560028054959096169416939093179093556004556003556009556100ed565b3390565b611cc8806100fc6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de57806393f1a40b11610097578063d59fc83911610071578063d59fc839146103f5578063dddebc9914610421578063e2bbb15814610429578063f2fde38b1461044c5761018e565b806393f1a40b146103a0578063c66ea6a5146103e5578063d49e77cd146103ed5761018e565b8063715018a61461031b5780637cd07e47146103235780638aa28550146103475780638d88a90e1461034f5780638da5cb5b146103755780638dbb1e3a1461037d5761018e565b8063441a3e701161014b57806351eb05a61161012557806351eb05a6146102ae5780635312ea8e146102cb578063630b5ba1146102e857806364482f79146102f05761018e565b8063441a3e7014610266578063454b06081461028957806348cd4cb1146102a65761018e565b8063081e3eda146101935780631526fe27146101ad57806317caf6f1146101fa5780631aed6553146102025780631eaaa0451461020a57806323cf311814610240575b600080fd5b61019b610472565b60408051918252519081900360200190f35b6101ca600480360360208110156101c357600080fd5b5035610478565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61019b6104b9565b61019b6104bf565b61023e6004803603606081101561022057600080fd5b508035906001600160a01b03602082013516906040013515156104c5565b005b61023e6004803603602081101561025657600080fd5b50356001600160a01b0316610690565b61023e6004803603604081101561027c57600080fd5b5080359060200135610714565b61023e6004803603602081101561029f57600080fd5b5035610867565b61019b610ac3565b61023e600480360360208110156102c457600080fd5b5035610ac9565b61023e600480360360208110156102e157600080fd5b5035610d18565b61023e610db3565b61023e6004803603606081101561030657600080fd5b50803590602081013590604001351515610dd6565b61023e610eb1565b61032b610f5d565b604080516001600160a01b039092168252519081900360200190f35b61019b610f6c565b61023e6004803603602081101561036557600080fd5b50356001600160a01b0316610f71565b61032b610fde565b61019b6004803603604081101561039357600080fd5b5080359060200135610fed565b6103cc600480360360408110156103b657600080fd5b50803590602001356001600160a01b0316611059565b6040805192835260208301919091528051918290030190f35b61032b61107d565b61032b61108c565b61019b6004803603604081101561040b57600080fd5b50803590602001356001600160a01b031661109b565b61019b6111fd565b61023e6004803603604081101561043f57600080fd5b5080359060200135611203565b61023e6004803603602081101561046257600080fd5b50356001600160a01b0316611308565b60065490565b6006818154811061048557fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60085481565b60035481565b6104cd61140a565b6001600160a01b03166104de610fde565b6001600160a01b031614610527576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b801561053557610535610db3565b600060095443116105485760095461054a565b435b60085490915061055a908561140e565b600855604080516080810182526001600160a01b0385811680835260208084018981528486018781526000606080880182815260068054600181018255935297517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600490930292830180546001600160a01b031916919098161790965591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40830155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4182015593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d42909401939093558351888152928301528415158284015291517f4677f0774f427b7084c61193b0b175490b6404bc62b3964f746c951253a7c448929181900390910190a150505050565b61069861140a565b6001600160a01b03166106a9610fde565b6001600160a01b0316146106f2576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006006838154811061072357fe5b600091825260208083208684526007825260408085203386529092529220805460049092029092019250831115610796576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b61079f84610ac9565b60006107d982600101546107d364e8d4a510006107cd8760030154876000015461146f90919063ffffffff16565b906114c8565b9061152f565b90506107e5338261158c565b81546107f1908561152f565b808355600384015461080e9164e8d4a51000916107cd919061146f565b60018301558254610829906001600160a01b0316338661171d565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6005546001600160a01b03166108bb576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b6000600682815481106108ca57fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b15801561092357600080fd5b505afa158015610937573d6000803e3d6000fd5b505050506040513d602081101561094d57600080fd5b505160055490915061096c906001600160a01b0384811691168361176f565b6005546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b1580156109be57600080fd5b505af11580156109d2573d6000803e3d6000fd5b505050506040513d60208110156109e857600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b50518214610aa2576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b60095481565b600060068281548110610ad857fe5b9060005260206000209060040201905080600201544311610af95750610d15565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b4357600080fd5b505afa158015610b57573d6000803e3d6000fd5b505050506040513d6020811015610b6d57600080fd5b5051905080610b83575043600290910155610d15565b6000610b93836002015443610fed565b90506000610bc06008546107cd8660010154610bba6004548761146f90919063ffffffff16565b9061146f565b6001546002549192506001600160a01b03908116916340c10f199116610be784600a6114c8565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b5050600154604080516340c10f1960e01b81523060048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b50505050610cda610ccf846107cd64e8d4a510008561146f90919063ffffffff16565b60038601549061140e565b600385015543600285015560405185907f20f73897541b01c2d01f4eca5ac07cb2c486d778aadf60fac2d2dcfd3c1389f190600090a2505050505b50565b600060068281548110610d2757fe5b60009182526020808320858452600782526040808520338087529352909320805460049093029093018054909450610d6c926001600160a01b0391909116919061171d565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60065460005b81811015610dd257610dca81610ac9565b600101610db9565b5050565b610dde61140a565b6001600160a01b0316610def610fde565b6001600160a01b031614610e38576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b8015610e4657610e46610db3565b610e8382610e7d60068681548110610e5a57fe5b90600052602060002090600402016001015460085461152f90919063ffffffff16565b9061140e565b6008819055508160068481548110610e9757fe5b906000526020600020906004020160010181905550505050565b610eb961140a565b6001600160a01b0316610eca610fde565b6001600160a01b031614610f13576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6005546001600160a01b031681565b600a81565b6002546001600160a01b03163314610fbc576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000600354821161100e57611007600a610bba848661152f565b9050611053565b600354831061102157611007828461152f565b6110076110396003548461152f90919063ffffffff16565b610e7d600a610bba8760035461152f90919063ffffffff16565b92915050565b60076020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b6002546001600160a01b031681565b600080600684815481106110ab57fe5b600091825260208083208784526007825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b505160028501549091504311801561116a57508015155b156111ca57600061117f856002015443610fed565b905060006111a66008546107cd8860010154610bba6004548761146f90919063ffffffff16565b90506111c56111be846107cd8464e8d4a5100061146f565b859061140e565b935050505b6111f283600101546107d364e8d4a510006107cd86886000015461146f90919063ffffffff16565b979650505050505050565b60045481565b60006006838154811061121257fe5b6000918252602080832086845260078252604080852033865290925292206004909102909101915061124384610ac9565b80541561128657600061127882600101546107d364e8d4a510006107cd8760030154876000015461146f90919063ffffffff16565b9050611284338261158c565b505b815461129d906001600160a01b0316333086611882565b80546112a9908461140e565b80825560038301546112c69164e8d4a51000916107cd919061146f565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61131061140a565b6001600160a01b0316611321610fde565b6001600160a01b03161461136a576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b6001600160a01b0381166113af5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ba66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082820183811015611468576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261147e57506000611053565b8282028284828161148b57fe5b04146114685760405162461bcd60e51b8152600401808060200182810382526021815260200180611bf26021913960400191505060405180910390fd5b600080821161151e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161152757fe5b049392505050565b600082821115611586576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156115d757600080fd5b505afa1580156115eb573d6000803e3d6000fd5b505050506040513d602081101561160157600080fd5b5051905080821115611695576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561166357600080fd5b505af1158015611677573d6000803e3d6000fd5b505050506040513d602081101561168d57600080fd5b506117189050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156116eb57600080fd5b505af11580156116ff573d6000803e3d6000fd5b505050506040513d602081101561171557600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526117189084906118e2565b8015806117f5575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d60208110156117f157600080fd5b5051155b6118305760405162461bcd60e51b8152600401808060200182810382526036815260200180611c5d6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526117189084906118e2565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526118dc9085906118e2565b50505050565b6060611937826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119939092919063ffffffff16565b8051909150156117185780806020019051602081101561195657600080fd5b50516117185760405162461bcd60e51b815260040180806020018281038252602a815260200180611c33602a913960400191505060405180910390fd5b60606119a284846000856119aa565b949350505050565b6060824710156119eb5760405162461bcd60e51b8152600401808060200182810382526026815260200180611bcc6026913960400191505060405180910390fd5b6119f485611afb565b611a45576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611a845780518252601f199092019160209182019101611a65565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611ae6576040519150601f19603f3d011682016040523d82523d6000602084013e611aeb565b606091505b50915091506111f2828286611b01565b3b151590565b60608315611b10575081611468565b825115611b205782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b6a578181015183820152602001611b52565b50505050905090810190601f168015611b975780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220da4daddbd093dcced94fb5dab07f6bf8eb12d3943c12da7bdb34bbf98f951d9b64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de57806393f1a40b11610097578063d59fc83911610071578063d59fc839146103f5578063dddebc9914610421578063e2bbb15814610429578063f2fde38b1461044c5761018e565b806393f1a40b146103a0578063c66ea6a5146103e5578063d49e77cd146103ed5761018e565b8063715018a61461031b5780637cd07e47146103235780638aa28550146103475780638d88a90e1461034f5780638da5cb5b146103755780638dbb1e3a1461037d5761018e565b8063441a3e701161014b57806351eb05a61161012557806351eb05a6146102ae5780635312ea8e146102cb578063630b5ba1146102e857806364482f79146102f05761018e565b8063441a3e7014610266578063454b06081461028957806348cd4cb1146102a65761018e565b8063081e3eda146101935780631526fe27146101ad57806317caf6f1146101fa5780631aed6553146102025780631eaaa0451461020a57806323cf311814610240575b600080fd5b61019b610472565b60408051918252519081900360200190f35b6101ca600480360360208110156101c357600080fd5b5035610478565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61019b6104b9565b61019b6104bf565b61023e6004803603606081101561022057600080fd5b508035906001600160a01b03602082013516906040013515156104c5565b005b61023e6004803603602081101561025657600080fd5b50356001600160a01b0316610690565b61023e6004803603604081101561027c57600080fd5b5080359060200135610714565b61023e6004803603602081101561029f57600080fd5b5035610867565b61019b610ac3565b61023e600480360360208110156102c457600080fd5b5035610ac9565b61023e600480360360208110156102e157600080fd5b5035610d18565b61023e610db3565b61023e6004803603606081101561030657600080fd5b50803590602081013590604001351515610dd6565b61023e610eb1565b61032b610f5d565b604080516001600160a01b039092168252519081900360200190f35b61019b610f6c565b61023e6004803603602081101561036557600080fd5b50356001600160a01b0316610f71565b61032b610fde565b61019b6004803603604081101561039357600080fd5b5080359060200135610fed565b6103cc600480360360408110156103b657600080fd5b50803590602001356001600160a01b0316611059565b6040805192835260208301919091528051918290030190f35b61032b61107d565b61032b61108c565b61019b6004803603604081101561040b57600080fd5b50803590602001356001600160a01b031661109b565b61019b6111fd565b61023e6004803603604081101561043f57600080fd5b5080359060200135611203565b61023e6004803603602081101561046257600080fd5b50356001600160a01b0316611308565b60065490565b6006818154811061048557fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b60085481565b60035481565b6104cd61140a565b6001600160a01b03166104de610fde565b6001600160a01b031614610527576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b801561053557610535610db3565b600060095443116105485760095461054a565b435b60085490915061055a908561140e565b600855604080516080810182526001600160a01b0385811680835260208084018981528486018781526000606080880182815260068054600181018255935297517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f600490930292830180546001600160a01b031916919098161790965591517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40830155517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d4182015593517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d42909401939093558351888152928301528415158284015291517f4677f0774f427b7084c61193b0b175490b6404bc62b3964f746c951253a7c448929181900390910190a150505050565b61069861140a565b6001600160a01b03166106a9610fde565b6001600160a01b0316146106f2576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b60006006838154811061072357fe5b600091825260208083208684526007825260408085203386529092529220805460049092029092019250831115610796576040805162461bcd60e51b81526020600482015260126024820152711dda5d1a191c985dce881b9bdd0819dbdbd960721b604482015290519081900360640190fd5b61079f84610ac9565b60006107d982600101546107d364e8d4a510006107cd8760030154876000015461146f90919063ffffffff16565b906114c8565b9061152f565b90506107e5338261158c565b81546107f1908561152f565b808355600384015461080e9164e8d4a51000916107cd919061146f565b60018301558254610829906001600160a01b0316338661171d565b604080518581529051869133917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689181900360200190a35050505050565b6005546001600160a01b03166108bb576040805162461bcd60e51b815260206004820152601460248201527336b4b3b930ba329d1037379036b4b3b930ba37b960611b604482015290519081900360640190fd5b6000600682815481106108ca57fe5b600091825260208083206004928302018054604080516370a0823160e01b81523095810195909552519195506001600160a01b0316939284926370a0823192602480840193829003018186803b15801561092357600080fd5b505afa158015610937573d6000803e3d6000fd5b505050506040513d602081101561094d57600080fd5b505160055490915061096c906001600160a01b0384811691168361176f565b6005546040805163ce5494bb60e01b81526001600160a01b0385811660048301529151600093929092169163ce5494bb9160248082019260209290919082900301818787803b1580156109be57600080fd5b505af11580156109d2573d6000803e3d6000fd5b505050506040513d60208110156109e857600080fd5b5051604080516370a0823160e01b815230600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b50518214610aa2576040805162461bcd60e51b815260206004820152600c60248201526b1b5a59dc985d194e8818985960a21b604482015290519081900360640190fd5b83546001600160a01b0319166001600160a01b039190911617909255505050565b60095481565b600060068281548110610ad857fe5b9060005260206000209060040201905080600201544311610af95750610d15565b8054604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b4357600080fd5b505afa158015610b57573d6000803e3d6000fd5b505050506040513d6020811015610b6d57600080fd5b5051905080610b83575043600290910155610d15565b6000610b93836002015443610fed565b90506000610bc06008546107cd8660010154610bba6004548761146f90919063ffffffff16565b9061146f565b6001546002549192506001600160a01b03908116916340c10f199116610be784600a6114c8565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b5050600154604080516340c10f1960e01b81523060048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b158015610c9857600080fd5b505af1158015610cac573d6000803e3d6000fd5b50505050610cda610ccf846107cd64e8d4a510008561146f90919063ffffffff16565b60038601549061140e565b600385015543600285015560405185907f20f73897541b01c2d01f4eca5ac07cb2c486d778aadf60fac2d2dcfd3c1389f190600090a2505050505b50565b600060068281548110610d2757fe5b60009182526020808320858452600782526040808520338087529352909320805460049093029093018054909450610d6c926001600160a01b0391909116919061171d565b80546040805191825251849133917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959181900360200190a360008082556001909101555050565b60065460005b81811015610dd257610dca81610ac9565b600101610db9565b5050565b610dde61140a565b6001600160a01b0316610def610fde565b6001600160a01b031614610e38576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b8015610e4657610e46610db3565b610e8382610e7d60068681548110610e5a57fe5b90600052602060002090600402016001015460085461152f90919063ffffffff16565b9061140e565b6008819055508160068481548110610e9757fe5b906000526020600020906004020160010181905550505050565b610eb961140a565b6001600160a01b0316610eca610fde565b6001600160a01b031614610f13576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6005546001600160a01b031681565b600a81565b6002546001600160a01b03163314610fbc576040805162461bcd60e51b81526020600482015260096024820152686465763a207775743f60b81b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6000600354821161100e57611007600a610bba848661152f565b9050611053565b600354831061102157611007828461152f565b6110076110396003548461152f90919063ffffffff16565b610e7d600a610bba8760035461152f90919063ffffffff16565b92915050565b60076020908152600092835260408084209091529082529020805460019091015482565b6001546001600160a01b031681565b6002546001600160a01b031681565b600080600684815481106110ab57fe5b600091825260208083208784526007825260408085206001600160a01b03898116875290845281862060049586029093016003810154815484516370a0823160e01b81523098810198909852935191985093969395939492909116926370a08231926024808301939192829003018186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d602081101561115357600080fd5b505160028501549091504311801561116a57508015155b156111ca57600061117f856002015443610fed565b905060006111a66008546107cd8860010154610bba6004548761146f90919063ffffffff16565b90506111c56111be846107cd8464e8d4a5100061146f565b859061140e565b935050505b6111f283600101546107d364e8d4a510006107cd86886000015461146f90919063ffffffff16565b979650505050505050565b60045481565b60006006838154811061121257fe5b6000918252602080832086845260078252604080852033865290925292206004909102909101915061124384610ac9565b80541561128657600061127882600101546107d364e8d4a510006107cd8760030154876000015461146f90919063ffffffff16565b9050611284338261158c565b505b815461129d906001600160a01b0316333086611882565b80546112a9908461140e565b80825560038301546112c69164e8d4a51000916107cd919061146f565b6001820155604080518481529051859133917f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159181900360200190a350505050565b61131061140a565b6001600160a01b0316611321610fde565b6001600160a01b03161461136a576040805162461bcd60e51b81526020600482018190526024820152600080516020611c13833981519152604482015290519081900360640190fd5b6001600160a01b0381166113af5760405162461bcd60e51b8152600401808060200182810382526026815260200180611ba66026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600082820183811015611468576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261147e57506000611053565b8282028284828161148b57fe5b04146114685760405162461bcd60e51b8152600401808060200182810382526021815260200180611bf26021913960400191505060405180910390fd5b600080821161151e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161152757fe5b049392505050565b600082821115611586576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156115d757600080fd5b505afa1580156115eb573d6000803e3d6000fd5b505050506040513d602081101561160157600080fd5b5051905080821115611695576001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561166357600080fd5b505af1158015611677573d6000803e3d6000fd5b505050506040513d602081101561168d57600080fd5b506117189050565b6001546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156116eb57600080fd5b505af11580156116ff573d6000803e3d6000fd5b505050506040513d602081101561171557600080fd5b50505b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526117189084906118e2565b8015806117f5575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156117c757600080fd5b505afa1580156117db573d6000803e3d6000fd5b505050506040513d60208110156117f157600080fd5b5051155b6118305760405162461bcd60e51b8152600401808060200182810382526036815260200180611c5d6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526117189084906118e2565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526118dc9085906118e2565b50505050565b6060611937826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119939092919063ffffffff16565b8051909150156117185780806020019051602081101561195657600080fd5b50516117185760405162461bcd60e51b815260040180806020018281038252602a815260200180611c33602a913960400191505060405180910390fd5b60606119a284846000856119aa565b949350505050565b6060824710156119eb5760405162461bcd60e51b8152600401808060200182810382526026815260200180611bcc6026913960400191505060405180910390fd5b6119f485611afb565b611a45576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310611a845780518252601f199092019160209182019101611a65565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611ae6576040519150601f19603f3d011682016040523d82523d6000602084013e611aeb565b606091505b50915091506111f2828286611b01565b3b151590565b60608315611b10575081611468565b825115611b205782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611b6a578181015183820152602001611b52565b50505050905090810190601f168015611b975780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a2646970667358221220da4daddbd093dcced94fb5dab07f6bf8eb12d3943c12da7bdb34bbf98f951d9b64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
