{
  "_format": "hh-sol-artifact-1",
  "contractName": "MiniChefV2",
  "sourceName": "contracts/MiniChefV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_pichi",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "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"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "EmergencyWithdraw",
      "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": "Harvest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "pichiPerSecond",
          "type": "uint256"
        }
      ],
      "name": "LogPichiPerSecond",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IERC20",
          "name": "lpToken",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        }
      ],
      "name": "LogPoolAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "contract IRewarder",
          "name": "rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "overwrite",
          "type": "bool"
        }
      ],
      "name": "LogSetPool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "lastRewardTime",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accPichiPerShare",
          "type": "uint256"
        }
      ],
      "name": "LogUpdatePool",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "PICHI",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IERC20",
          "name": "_lpToken",
          "type": "address"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        }
      ],
      "name": "add",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "calls",
          "type": "bytes[]"
        },
        {
          "internalType": "bool",
          "name": "revertOnFail",
          "type": "bool"
        }
      ],
      "name": "batch",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "successes",
          "type": "bool[]"
        },
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "emergencyWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "harvest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "lpToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "pids",
          "type": "uint256[]"
        }
      ],
      "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": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "pendingPichi",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pending",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "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": "permitToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pichiPerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "poolInfo",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "accPichiPerShare",
          "type": "uint128"
        },
        {
          "internalType": "uint64",
          "name": "lastRewardTime",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "allocPoint",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "poolLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pools",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "rewarder",
      "outputs": [
        {
          "internalType": "contract IRewarder",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_allocPoint",
          "type": "uint256"
        },
        {
          "internalType": "contract IRewarder",
          "name": "_rewarder",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "overwrite",
          "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": [
        {
          "internalType": "uint256",
          "name": "_pichiPerSecond",
          "type": "uint256"
        }
      ],
      "name": "setPichiPerSecond",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAllocPoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "direct",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "renounce",
          "type": "bool"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        }
      ],
      "name": "updatePool",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint128",
              "name": "accPichiPerShare",
              "type": "uint128"
            },
            {
              "internalType": "uint64",
              "name": "lastRewardTime",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "allocPoint",
              "type": "uint64"
            }
          ],
          "internalType": "struct MiniChefV2.PoolInfo",
          "name": "pool",
          "type": "tuple"
        }
      ],
      "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": "int256",
          "name": "rewardDebt",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "pid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawAndHarvest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a06040523480156200001157600080fd5b5060405162002c3038038062002c30833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c612b4f620000e1600039806108ff52806119f15280611cf75250612b4f6000f3fe6080604052600436106101b75760003560e01c806378ed5d1f116100ec57806393f1a40b1161008a578063d1abb90711610064578063d1abb907146104c9578063d2423b51146104e9578063e30c39781461050a578063e7d77cba1461051f576101b7565b806393f1a40b1461045b578063ab7de09814610489578063c346253d146104a9576101b7565b806386f227f5116100c657806386f227f5146103e657806388bba42f146104065780638da5cb5b146104265780638dbdbe6d1461043b576101b7565b806378ed5d1f146103845780637c516e94146103b15780637cd07e47146103d1576101b7565b806323cf3118116101595780634e71e0c8116101335780634e71e0c81461030d57806351eb05a61461032257806357a5b58c1461034f57806358b84f4d1461036f576101b7565b806323cf3118146102ad5780632f940c70146102cd578063454b0608146102ed576101b7565b80630ad58d2f116101955780630ad58d2f146102295780631526fe271461024957806317caf6f11461027857806318fccc761461028d576101b7565b8063033ce5c1146101bc578063078dfbe7146101de578063081e3eda146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046123c4565b610534565b005b3480156101ea57600080fd5b506101dc6101f936600461217d565b6105a7565b34801561020a57600080fd5b5061021361068d565b6040516102209190612a03565b60405180910390f35b34801561023557600080fd5b506101dc610244366004612459565b610693565b34801561025557600080fd5b506102696102643660046123c4565b610823565b604051610220939291906129d9565b34801561028457600080fd5b50610213610865565b34801561029957600080fd5b506101dc6102a83660046123f4565b61086b565b3480156102b957600080fd5b506101dc6102c836600461230e565b610a05565b3480156102d957600080fd5b506101dc6102e83660046123f4565b610a51565b3480156102f957600080fd5b506101dc6103083660046123c4565b610b72565b34801561031957600080fd5b506101dc610e1e565b34801561032e57600080fd5b5061034261033d3660046123c4565b610eab565b60405161022091906129a0565b34801561035b57600080fd5b506101dc61036a366004612210565b611135565b34801561037b57600080fd5b5061021361116b565b34801561039057600080fd5b506103a461039f3660046123c4565b611171565b6040516102209190612527565b3480156103bd57600080fd5b506101dc6103cc366004612287565b611198565b3480156103dd57600080fd5b506103a461120c565b3480156103f257600080fd5b506102136104013660046123f4565b61121b565b34801561041257600080fd5b506101dc610421366004612486565b611415565b34801561043257600080fd5b506103a4611582565b34801561044757600080fd5b506101dc610456366004612459565b611591565b34801561046757600080fd5b5061047b6104763660046123f4565b61171c565b604051610220929190612a4b565b34801561049557600080fd5b506101dc6104a4366004612423565b611740565b3480156104b557600080fd5b506103a46104c43660046123c4565b611916565b3480156104d557600080fd5b506101dc6104e4366004612459565b611923565b6104fc6104f73660046121c7565b611b56565b6040516102209291906125b9565b34801561051657600080fd5b506103a4611ce6565b34801561052b57600080fd5b506103a4611cf5565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e90612818565b60405180910390fd5b60088190556040517fb2c52d2a36d4454ed77f8f367b8f8112a034172ff2227ea1544ed8b99b1432049061059c908390612a03565b60405180910390a150565b6000546001600160a01b031633146105d15760405162461bcd60e51b815260040161055e90612818565b811561066c576001600160a01b0383161515806105eb5750805b6106075760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610688565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b61069b612115565b6106a484610eab565b600085815260066020908152604080832033845290915290208151919250906106f69064e8d4a51000906106e29087906001600160801b0316611d19565b816106e957fe5b6001840154919004611d56565b600182015580546107079085611da3565b815560058054600091908790811061071b57fe5b6000918252602090912001546001600160a01b0316905080156107a157815460405163569db41b60e11b81526001600160a01b0383169163ad3b68369161076e918a9133918a9160009190600401612a0c565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b6107cf8486600489815481106107b357fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108139190612a03565b60405180910390a4505050505050565b6003818154811061083057fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610873612115565b61087c83610eab565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108b891906001600160801b0316611d19565b816108bf57fe5b04905060006108e36108de846001015484611d5690919063ffffffff16565b611eb4565b6001840183905590508015610926576109266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005878154811061093557fe5b6000918252602090912001546001600160a01b0316905080156109ba57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610987918b9133918c91899190600401612a0c565b600060405180830381600087803b1580156109a157600080fd5b505af11580156109b5573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109f49190612a03565b60405180910390a350505050505050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161055e90612818565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a8857fe5b6000918252602090912001546001600160a01b031690508015610b0d5760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610ada908890339089906000908190600401612a0c565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050505b610b1f8483600488815481106107b357fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610b639190612a03565b60405180910390a45050505050565b6002546001600160a01b0316610b9a5760405162461bcd60e51b815260040161055e906128b9565b600060048281548110610ba957fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610be4903090600401612527565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610c6992169085906004016125a0565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610ced908690600401612527565b602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d6e903090600401612527565b60206040518083038186803b158015610d8657600080fd5b505afa158015610d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbe91906123dc565b8214610ddc5760405162461bcd60e51b815260040161055e90612761565b8060048581548110610dea57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610e495760405162461bcd60e51b815260040161055e9061284d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610eb3612115565b60038281548110610ec057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915042111561113057600060048381548110610f2257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610f5b903090600401612527565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906123dc565b90508015611054576000610fd583602001516001600160401b031642611da390919063ffffffff16565b9050600060075461100885604001516001600160401b031661100260085486611d1990919063ffffffff16565b90611d19565b8161100f57fe5b049050611046611035846110288464e8d4a51000611d19565b8161102f57fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b61105d42611f32565b6001600160401b03166020830152600380548391908590811061107c57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926111269290918691612a59565b60405180910390a2505b919050565b8060005b818110156111655761115c84848381811061115057fe5b90506020020135610eab565b50600101611139565b50505050565b60085481565b6004818154811061117e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf906111d0908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611225612115565b6003848154811061123257fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106112b057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906112e9903090600401612527565b60206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906123dc565b905083602001516001600160401b03164211801561135657508015155b156113dc57600061137d85602001516001600160401b031642611da390919063ffffffff16565b905060006007546113aa87604001516001600160401b031661100260085486611d1990919063ffffffff16565b816113b157fe5b0490506113d7836113c78364e8d4a51000611d19565b816113ce57fe5b86919004611f5b565b935050505b6001830154835461140a916108de9164e8d4a51000906113fc9087611d19565b8161140357fe5b0490611d56565b979650505050505050565b6000546001600160a01b0316331461143f5760405162461bcd60e51b815260040161055e90612818565b61147e836114786003878154811061145357fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561148a83611f32565b6003858154811061149757fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561150b5781600585815481106114dc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611537576005848154811061151d57fe5b6000918252602090912001546001600160a01b0316611539565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611574929190612a3b565b60405180910390a350505050565b6000546001600160a01b031681565b611599612115565b6115a284610eab565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906115d49085611f5b565b8155815161160b9064e8d4a51000906115f79087906001600160801b0316611d19565b816115fe57fe5b6001840154919004611f7e565b816001018190555060006005868154811061162257fe5b6000918252602090912001546001600160a01b0316905080156116a857815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611675918a918991829160009190600401612a0c565b600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050505b6116d833308760048a815481106116bb57fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108139190612a03565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b0316331461176a5760405162461bcd60e51b815260040161055e90612818565b6007546117779084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161182442611f32565b6001600160401b0316815260200161183b86611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b0380841692908516916118da91611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e5866040516119099190612a03565b60405180910390a4505050565b6005818154811061117e57fe5b61192b612115565b61193484610eab565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161197091906001600160801b0316611d19565b8161197757fe5b04905060006119966108de846001015484611d5690919063ffffffff16565b90506119d164e8d4a510006119c186600001516001600160801b031689611d1990919063ffffffff16565b816119c857fe5b84919004611d56565b600184015582546119e29087611da3565b8355611a186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b600060058881548110611a2757fe5b6000918252602090912001546001600160a01b031690508015611aac57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611a79918c9133918c91899190600401612a0c565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b505050505b611abe868860048b815481106107b357fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611b029190612a03565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611b449190612a03565b60405180910390a35050505050505050565b606080836001600160401b0381118015611b6f57600080fd5b50604051908082528060200260200182016040528015611b99578160200160208202803683370190505b509150836001600160401b0381118015611bb257600080fd5b50604051908082528060200260200182016040528015611be657816020015b6060815260200190600190039081611bd15790505b50905060005b84811015611cdd576000606030888885818110611c0557fe5b9050602002810190611c179190612a83565b604051611c259291906124fb565b600060405180830381855af49150503d8060008114611c60576040519150601f19603f3d011682016040523d82523d6000602084013e611c65565b606091505b50915091508180611c74575085155b611c7d826120b5565b90611c9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611ca957fe5b60200260200101901515908115158152505080848481518110611cc857fe5b60209081029190910101525050600101611bec565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612969565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128f0565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e906127aa565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e906127e1565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612882565b81810181811015611d505760405162461bcd60e51b815260040161055e906127e1565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e90612934565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006020820152611130565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af3565b925060208401356121ac81612b0b565b915060408401356121bc81612b0b565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0b565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0b565b60006020828403121561227c578081fd5b8151611d9c81612af3565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af3565b975060208901356122be81612af3565b965060408901356122ce81612af3565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af3565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac7565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af3565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af3565b915060408401356121bc81612af3565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af3565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af3565b915060608501356124c481612b0b565b939692955090935050565b600081518084526124e7816020860160208601612ac7565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a03565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a99578283fd5b8301803591506001600160401b03821115612ab2578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae2578181015183820152602001612aca565b838111156111655750506000910152565b6001600160a01b0381168114612b0857600080fd5b50565b8015158114612b0857600080fdfea26469706673582212200e870d4617b95838b9c225c77a9807481015d616d4c96efba849a64bbe8c5b2564736f6c634300060c0033",
  "deployedBytecode": "0x6080604052600436106101b75760003560e01c806378ed5d1f116100ec57806393f1a40b1161008a578063d1abb90711610064578063d1abb907146104c9578063d2423b51146104e9578063e30c39781461050a578063e7d77cba1461051f576101b7565b806393f1a40b1461045b578063ab7de09814610489578063c346253d146104a9576101b7565b806386f227f5116100c657806386f227f5146103e657806388bba42f146104065780638da5cb5b146104265780638dbdbe6d1461043b576101b7565b806378ed5d1f146103845780637c516e94146103b15780637cd07e47146103d1576101b7565b806323cf3118116101595780634e71e0c8116101335780634e71e0c81461030d57806351eb05a61461032257806357a5b58c1461034f57806358b84f4d1461036f576101b7565b806323cf3118146102ad5780632f940c70146102cd578063454b0608146102ed576101b7565b80630ad58d2f116101955780630ad58d2f146102295780631526fe271461024957806317caf6f11461027857806318fccc761461028d576101b7565b8063033ce5c1146101bc578063078dfbe7146101de578063081e3eda146101fe575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046123c4565b610534565b005b3480156101ea57600080fd5b506101dc6101f936600461217d565b6105a7565b34801561020a57600080fd5b5061021361068d565b6040516102209190612a03565b60405180910390f35b34801561023557600080fd5b506101dc610244366004612459565b610693565b34801561025557600080fd5b506102696102643660046123c4565b610823565b604051610220939291906129d9565b34801561028457600080fd5b50610213610865565b34801561029957600080fd5b506101dc6102a83660046123f4565b61086b565b3480156102b957600080fd5b506101dc6102c836600461230e565b610a05565b3480156102d957600080fd5b506101dc6102e83660046123f4565b610a51565b3480156102f957600080fd5b506101dc6103083660046123c4565b610b72565b34801561031957600080fd5b506101dc610e1e565b34801561032e57600080fd5b5061034261033d3660046123c4565b610eab565b60405161022091906129a0565b34801561035b57600080fd5b506101dc61036a366004612210565b611135565b34801561037b57600080fd5b5061021361116b565b34801561039057600080fd5b506103a461039f3660046123c4565b611171565b6040516102209190612527565b3480156103bd57600080fd5b506101dc6103cc366004612287565b611198565b3480156103dd57600080fd5b506103a461120c565b3480156103f257600080fd5b506102136104013660046123f4565b61121b565b34801561041257600080fd5b506101dc610421366004612486565b611415565b34801561043257600080fd5b506103a4611582565b34801561044757600080fd5b506101dc610456366004612459565b611591565b34801561046757600080fd5b5061047b6104763660046123f4565b61171c565b604051610220929190612a4b565b34801561049557600080fd5b506101dc6104a4366004612423565b611740565b3480156104b557600080fd5b506103a46104c43660046123c4565b611916565b3480156104d557600080fd5b506101dc6104e4366004612459565b611923565b6104fc6104f73660046121c7565b611b56565b6040516102209291906125b9565b34801561051657600080fd5b506103a4611ce6565b34801561052b57600080fd5b506103a4611cf5565b6000546001600160a01b031633146105675760405162461bcd60e51b815260040161055e90612818565b60405180910390fd5b60088190556040517fb2c52d2a36d4454ed77f8f367b8f8112a034172ff2227ea1544ed8b99b1432049061059c908390612a03565b60405180910390a150565b6000546001600160a01b031633146105d15760405162461bcd60e51b815260040161055e90612818565b811561066c576001600160a01b0383161515806105eb5750805b6106075760405162461bcd60e51b815260040161055e90612732565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610688565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60035490565b61069b612115565b6106a484610eab565b600085815260066020908152604080832033845290915290208151919250906106f69064e8d4a51000906106e29087906001600160801b0316611d19565b816106e957fe5b6001840154919004611d56565b600182015580546107079085611da3565b815560058054600091908790811061071b57fe5b6000918252602090912001546001600160a01b0316905080156107a157815460405163569db41b60e11b81526001600160a01b0383169163ad3b68369161076e918a9133918a9160009190600401612a0c565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b6107cf8486600489815481106107b357fe5b6000918252602090912001546001600160a01b03169190611dc6565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108139190612a03565b60405180910390a4505050505050565b6003818154811061083057fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60075481565b610873612115565b61087c83610eab565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916108b891906001600160801b0316611d19565b816108bf57fe5b04905060006108e36108de846001015484611d5690919063ffffffff16565b611eb4565b6001840183905590508015610926576109266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b60006005878154811061093557fe5b6000918252602090912001546001600160a01b0316905080156109ba57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691610987918b9133918c91899190600401612a0c565b600060405180830381600087803b1580156109a157600080fd5b505af11580156109b5573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516109f49190612a03565b60405180910390a350505050505050565b6000546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161055e90612818565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610a8857fe5b6000918252602090912001546001600160a01b031690508015610b0d5760405163569db41b60e11b81526001600160a01b0382169063ad3b683690610ada908890339089906000908190600401612a0c565b600060405180830381600087803b158015610af457600080fd5b505af1158015610b08573d6000803e3d6000fd5b505050505b610b1f8483600488815481106107b357fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610b639190612a03565b60405180910390a45050505050565b6002546001600160a01b0316610b9a5760405162461bcd60e51b815260040161055e906128b9565b600060048281548110610ba957fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a0823190610be4903090600401612527565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906123dc565b60025460405163095ea7b360e01b81529192506001600160a01b038085169263095ea7b392610c6992169085906004016125a0565b602060405180830381600087803b158015610c8357600080fd5b505af1158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb919061224f565b5060025460405163ce5494bb60e01b81526000916001600160a01b03169063ce5494bb90610ced908690600401612527565b602060405180830381600087803b158015610d0757600080fd5b505af1158015610d1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3f919061226b565b6040516370a0823160e01b81529091506001600160a01b038216906370a0823190610d6e903090600401612527565b60206040518083038186803b158015610d8657600080fd5b505afa158015610d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbe91906123dc565b8214610ddc5760405162461bcd60e51b815260040161055e90612761565b8060048581548110610dea57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6001546001600160a01b0316338114610e495760405162461bcd60e51b815260040161055e9061284d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610eb3612115565b60038281548110610ec057fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b9091041690820152915042111561113057600060048381548110610f2257fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610f5b903090600401612527565b60206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906123dc565b90508015611054576000610fd583602001516001600160401b031642611da390919063ffffffff16565b9050600060075461100885604001516001600160401b031661100260085486611d1990919063ffffffff16565b90611d19565b8161100f57fe5b049050611046611035846110288464e8d4a51000611d19565b8161102f57fe5b04611eda565b85516001600160801b031690611f03565b6001600160801b0316845250505b61105d42611f32565b6001600160401b03166020830152600380548391908590811061107c57fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926111269290918691612a59565b60405180910390a2505b919050565b8060005b818110156111655761115c84848381811061115057fe5b90506020020135610eab565b50600101611139565b50505050565b60085481565b6004818154811061117e57fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf906111d0908a908a908a908a908a908a908a9060040161255f565b600060405180830381600087803b1580156111ea57600080fd5b505af11580156111fe573d6000803e3d6000fd5b505050505050505050505050565b6002546001600160a01b031681565b6000611225612115565b6003848154811061123257fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600683528385206001600160a01b03891686529092529183208251600480549496509194921692889081106112b057fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906112e9903090600401612527565b60206040518083038186803b15801561130157600080fd5b505afa158015611315573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133991906123dc565b905083602001516001600160401b03164211801561135657508015155b156113dc57600061137d85602001516001600160401b031642611da390919063ffffffff16565b905060006007546113aa87604001516001600160401b031661100260085486611d1990919063ffffffff16565b816113b157fe5b0490506113d7836113c78364e8d4a51000611d19565b816113ce57fe5b86919004611f5b565b935050505b6001830154835461140a916108de9164e8d4a51000906113fc9087611d19565b8161140357fe5b0490611d56565b979650505050505050565b6000546001600160a01b0316331461143f5760405162461bcd60e51b815260040161055e90612818565b61147e836114786003878154811061145357fe5b60009182526020909120015460075490600160c01b90046001600160401b0316611da3565b90611f5b565b60075561148a83611f32565b6003858154811061149757fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550801561150b5781600585815481106114dc57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611537576005848154811061151d57fe5b6000918252602090912001546001600160a01b0316611539565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611574929190612a3b565b60405180910390a350505050565b6000546001600160a01b031681565b611599612115565b6115a284610eab565b60008581526006602090815260408083206001600160a01b038716845290915290208054919250906115d49085611f5b565b8155815161160b9064e8d4a51000906115f79087906001600160801b0316611d19565b816115fe57fe5b6001840154919004611f7e565b816001018190555060006005868154811061162257fe5b6000918252602090912001546001600160a01b0316905080156116a857815460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611675918a918991829160009190600401612a0c565b600060405180830381600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050505b6116d833308760048a815481106116bb57fe5b6000918252602090912001546001600160a01b0316929190611fc4565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108139190612a03565b60066020908152600092835260408084209091529082529020805460019091015482565b6000546001600160a01b0316331461176a5760405162461bcd60e51b815260040161055e90612818565b6007546117779084611f5b565b6007556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b038086166001600160a01b03199283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090930180549285169290911691909117905560408051606081019091529081526003906020810161182442611f32565b6001600160401b0316815260200161183b86611f32565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556004546001600160a01b0380841692908516916118da91611da3565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e5866040516119099190612a03565b60405180910390a4505050565b6005818154811061117e57fe5b61192b612115565b61193484610eab565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a510009161197091906001600160801b0316611d19565b8161197757fe5b04905060006119966108de846001015484611d5690919063ffffffff16565b90506119d164e8d4a510006119c186600001516001600160801b031689611d1990919063ffffffff16565b816119c857fe5b84919004611d56565b600184015582546119e29087611da3565b8355611a186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611dc6565b600060058881548110611a2757fe5b6000918252602090912001546001600160a01b031690508015611aac57835460405163569db41b60e11b81526001600160a01b0383169163ad3b683691611a79918c9133918c91899190600401612a0c565b600060405180830381600087803b158015611a9357600080fd5b505af1158015611aa7573d6000803e3d6000fd5b505050505b611abe868860048b815481106107b357fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a604051611b029190612a03565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611b449190612a03565b60405180910390a35050505050505050565b606080836001600160401b0381118015611b6f57600080fd5b50604051908082528060200260200182016040528015611b99578160200160208202803683370190505b509150836001600160401b0381118015611bb257600080fd5b50604051908082528060200260200182016040528015611be657816020015b6060815260200190600190039081611bd15790505b50905060005b84811015611cdd576000606030888885818110611c0557fe5b9050602002810190611c179190612a83565b604051611c259291906124fb565b600060405180830381855af49150503d8060008114611c60576040519150601f19603f3d011682016040523d82523d6000602084013e611c65565b606091505b50915091508180611c74575085155b611c7d826120b5565b90611c9b5760405162461bcd60e51b815260040161055e9190612653565b5081858481518110611ca957fe5b60200260200101901515908115158152505080848481518110611cc857fe5b60209081029190910101525050600101611bec565b50935093915050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000811580611d3457505080820282828281611d3157fe5b04145b611d505760405162461bcd60e51b815260040161055e90612969565b92915050565b6000818303818312801590611d6b5750838113155b80611d805750600083128015611d8057508381135b611d9c5760405162461bcd60e51b815260040161055e906128f0565b9392505050565b80820382811115611d505760405162461bcd60e51b815260040161055e90612666565b60006060846001600160a01b031663a9059cbb8585604051602401611dec9291906125a0565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611e25919061250b565b6000604051808303816000865af19150503d8060008114611e62576040519150601f19603f3d011682016040523d82523d6000602084013e611e67565b606091505b5091509150818015611e91575080511580611e91575080806020019051810190611e91919061224f565b611ead5760405162461bcd60e51b815260040161055e906126ba565b5050505050565b600080821215611ed65760405162461bcd60e51b815260040161055e90612695565b5090565b60006001600160801b03821115611ed65760405162461bcd60e51b815260040161055e906127aa565b8181016001600160801b038083169082161015611d505760405162461bcd60e51b815260040161055e906127e1565b60006001600160401b03821115611ed65760405162461bcd60e51b815260040161055e90612882565b81810181811015611d505760405162461bcd60e51b815260040161055e906127e1565b6000828201818312801590611f935750838112155b80611fa85750600083128015611fa857508381125b611d9c5760405162461bcd60e51b815260040161055e906126f1565b60006060856001600160a01b03166323b872dd868686604051602401611fec9392919061253b565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051612025919061250b565b6000604051808303816000865af19150503d8060008114612062576040519150601f19603f3d011682016040523d82523d6000602084013e612067565b606091505b5091509150818015612091575080511580612091575080806020019051810190612091919061224f565b6120ad5760405162461bcd60e51b815260040161055e90612934565b505050505050565b60606044825110156120fb575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006020820152611130565b60048201915081806020019051810190611d50919061232a565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612146578182fd5b5081356001600160401b0381111561215c578182fd5b602083019150836020808302850101111561217657600080fd5b9250929050565b600080600060608486031215612191578283fd5b833561219c81612af3565b925060208401356121ac81612b0b565b915060408401356121bc81612b0b565b809150509250925092565b6000806000604084860312156121db578283fd5b83356001600160401b038111156121f0578384fd5b6121fc86828701612135565b90945092505060208401356121bc81612b0b565b60008060208385031215612222578182fd5b82356001600160401b03811115612237578283fd5b61224385828601612135565b90969095509350505050565b600060208284031215612260578081fd5b8151611d9c81612b0b565b60006020828403121561227c578081fd5b8151611d9c81612af3565b600080600080600080600080610100898b0312156122a3578384fd5b88356122ae81612af3565b975060208901356122be81612af3565b965060408901356122ce81612af3565b9550606089013594506080890135935060a089013560ff811681146122f1578384fd5b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121561231f578081fd5b8135611d9c81612af3565b60006020828403121561233b578081fd5b81516001600160401b0380821115612351578283fd5b818401915084601f830112612364578283fd5b815181811115612372578384fd5b604051601f8201601f191681016020018381118282101715612392578586fd5b6040528181528382016020018710156123a9578485fd5b6123ba826020830160208701612ac7565b9695505050505050565b6000602082840312156123d5578081fd5b5035919050565b6000602082840312156123ed578081fd5b5051919050565b60008060408385031215612406578182fd5b82359150602083013561241881612af3565b809150509250929050565b600080600060608486031215612437578081fd5b83359250602084013561244981612af3565b915060408401356121bc81612af3565b60008060006060848603121561246d578081fd5b833592506020840135915060408401356121bc81612af3565b6000806000806080858703121561249b578182fd5b843593506020850135925060408501356124b481612af3565b915060608501356124c481612b0b565b939692955090935050565b600081518084526124e7816020860160208601612ac7565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b6000825161251d818460208701612ac7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156125f45781511515845292840192908401906001016125d6565b5050508381038285015280855161260b8184612a03565b91508192508381028201848801865b838110156126445785830385526126328383516124cf565b9487019492509086019060010161261a565b50909998505050505050505050565b600060208252611d9c60208301846124cf565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d6040820152680eae6e840dac2e8c6d60bb1b606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612a99578283fd5b8301803591506001600160401b03821115612ab2578283fd5b60200191503681900382131561217657600080fd5b60005b83811015612ae2578181015183820152602001612aca565b838111156111655750506000910152565b6001600160a01b0381168114612b0857600080fd5b50565b8015158114612b0857600080fdfea26469706673582212200e870d4617b95838b9c225c77a9807481015d616d4c96efba849a64bbe8c5b2564736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
