{
  "_format": "hh-sol-artifact-1",
  "contractName": "EdgeStratRewards",
  "sourceName": "contracts/EdgeStrats/EdgeStratRewards.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "asset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_rewardToken",
          "type": "address"
        }
      ],
      "name": "claimReward",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "convertToAssets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "convertToShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRewardTokens",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "_symbol",
          "type": "string"
        }
      ],
      "name": "initialize",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "maxDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "maxMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "maxRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "maxWithdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "rewardAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "rewardAmount",
          "type": "uint256"
        }
      ],
      "name": "notifyRewardAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_rewardToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "pendingRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "pending",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewWithdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewardInfo",
      "outputs": [
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "totalDistributed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastRewardTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastRewardDeposit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "periodFinish",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "rewardRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accRewardPerShare",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "rewardTokens",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "stakeInfo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rewardDebt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "pendingReward",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAssets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50613027806100206000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806394bf804d11610145578063c4f59f9b116100bd578063ce96cb771161008c578063d905777e11610071578063d905777e14610583578063dd62ed3e14610596578063ef8b30f7146104c457600080fd5b8063ce96cb771461055d578063d279c1911461057057600080fd5b8063c4f59f9b146104af578063c63d75b614610347578063c6e6f592146104c4578063cbecf6b5146104d757600080fd5b8063a9059cbb11610114578063b460af94116100f9578063b460af9414610476578063b66503cf14610489578063ba0876521461049c57600080fd5b8063a9059cbb14610450578063b3d7f6b91461046357600080fd5b806394bf804d146103db57806395d89b41146103ee57806397e14f1c146103f6578063a457c2d71461043d57600080fd5b806339509351116101d85780636e553f65116101a75780637bb7bed11161018c5780637bb7bed1146103a257806380ac8228146103b557806390657147146103c857600080fd5b80636e553f651461036657806370a082311461037957600080fd5b80633950935114610334578063402d267d146103475780634cdad506146102915780634e71d92d1461035c57600080fd5b80630a28a4771161022f57806323b872dd1161021457806323b872dd146102e2578063313ce567146102f557806338d52e0f1461030f57600080fd5b80630a28a477146102c757806318160ddd146102da57600080fd5b806301e1d1141461026157806306fdde031461027c57806307a2d13a14610291578063095ea7b3146102a4575b600080fd5b6102696105cf565b6040519081526020015b60405180910390f35b610284610641565b604051610273919061298d565b61026961029f3660046129c0565b6106d3565b6102b76102b23660046129ee565b6106e6565b6040519015158152602001610273565b6102696102d53660046129c0565b6106fe565b603554610269565b6102b76102f0366004612a1a565b61070b565b6102fd610731565b60405160ff9091168152602001610273565b6065546001600160a01b03165b6040516001600160a01b039091168152602001610273565b6102b76103423660046129ee565b61074b565b610269610355366004612a5b565b5060001990565b61036461078a565b005b610269610374366004612a78565b6107a0565b610269610387366004612a5b565b6001600160a01b031660009081526033602052604090205490565b61031c6103b03660046129c0565b6107c9565b6102696103c3366004612aa8565b6107f3565b6102b76103d6366004612b79565b610948565b6102696103e9366004612a78565b610a73565b610284610a8d565b610428610404366004612aa8565b60996020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610273565b6102b761044b3660046129ee565b610a9c565b6102b761045e3660046129ee565b610b51565b6102696104713660046129c0565b610b5f565b610269610484366004612bef565b610b6c565b6103646104973660046129ee565b610be8565b6102696104aa366004612bef565b610cf3565b6104b7610d67565b6040516102739190612c31565b6102696104d23660046129c0565b610dc8565b6105266104e5366004612a5b565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015460ff9095169593949293919290919087565b6040805197151588526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610273565b61026961056b366004612a5b565b610dd5565b61036461057e366004612a5b565b610df9565b610269610591366004612a5b565b610e08565b6102696105a4366004612aa8565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6065546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c9190612c7e565b905090565b60606036805461065090612c97565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90612c97565b80156106c95780601f1061069e576101008083540402835291602001916106c9565b820191906000526020600020905b8154815290600101906020018083116106ac57829003601f168201915b5050505050905090565b60006106e0826000610e26565b92915050565b6000336106f4818585610e60565b5060019392505050565b60006106e0826001610fb8565b600033610719858285610fe8565b610724858585611074565b60019150505b9392505050565b60008060655461063c9190600160a01b900460ff16612ce7565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091906106f49082908690610785908790612d00565b610e60565b610792611279565b61079e33600133611352565b565b60006107b0565b60405180910390fd5b60006107bb84610dc8565b905061072a33848684611607565b609781815481106107d957600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038083166000818152609860209081526040808320815160e081018352815460ff1615158152600182015481850152600282015481840190815260038301546060830152600483015460808301908152600584015460a084015260069093015460c08301908152978916865260998552838620968652959093529083209451935190519294919391928591610890914290611629565b905060008460a00151826108a49190612d13565b90506108af60355490565b6108c6826c0c9f2c9cd04674edea40000000612d13565b6108d09190612d40565b6108da9084612d00565b9250836001015484600001546c0c9f2c9cd04674edea40000000856109148b6001600160a01b031660009081526033602052604090205490565b61091e9190612d13565b6109289190612d40565b6109329190612d62565b61093c9190612d00565b98975050505050505050565b60008054610100900460ff16158080156109695750600054600160ff909116105b806109835750303b158015610983575060005460ff166001145b6109f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107a7565b6000805460ff191660011790558015610a18576000805461ff0019166101001790555b610a2385858561165c565b91508015610a6b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b509392505050565b600080610a7f84610b5f565b905061072a33848387611607565b60606037805461065090612c97565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107a7565b610b468286868403610e60565b506001949350505050565b6000336106f4818585611074565b60006106e0826001610e26565b6000610b7782610dd5565b841115610bc65760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016107a7565b6000610bd1856106fe565b9050610be033858588856116db565b949350505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612c7e565b9050610c6a6001600160a01b038416333085611705565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd59190612c7e565b9050610ce18282612d62565b9250610ced84846117b6565b50505050565b6000610cfe82610e08565b841115610d4d5760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016107a7565b6000610d58856106d3565b9050610be033858584896116db565b606060978054806020026020016040519081016040528092919081815260200182805480156106c957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da1575050505050905090565b60006106e0826000610fb8565b6001600160a01b0381166000908152603360205260408120546106e0906000610e26565b610e0533600183611863565b50565b6001600160a01b0381166000908152603360205260408120546106e0565b600061072a610e336105cf565b610e3e906001612d00565b610e4a6000600a612e59565b603554610e579190612d00565b85919085611a46565b6001600160a01b038316610edb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b038216610f575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061072a610fc882600a612e59565b603554610fd59190612d00565b610fdd6105cf565b610e57906001612d00565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610ced57818110156110675760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107a7565b610ced8484848403610e60565b6001600160a01b0383166110f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03821661116c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b611177838383611aa3565b6001600160a01b038316600090815260336020526040902054818110156112065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112669086815260200190565b60405180910390a3610ced848484611ab4565b60005b609754811015610e05576000609860006097848154811061129f5761129f612e68565b60009182526020808320909101546001600160a01b031683528201929092526040018120600281015460048201549193506112db914290611629565b905060008260050154826112ef9190612d13565b90506112fa60355490565b611311826c0c9f2c9cd04674edea40000000612d13565b61131b9190612d40565b83600601600082825461132e9190612d00565b9091555050426002909301929092555081905061134a81612e7e565b91505061127c565b60005b609754811015610ced576000609860006097848154811061137857611378612e68565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220835160e081018552815460ff16151581526001820154818401526002820154818601526003820154606082015260048201546080820152600582015460a082015260069091015460c0820152938916825260999052908120609780549394509192909183918690811061141657611416612e68565b60009182526020808320909101546001600160a01b0316835282019290925260400181206001810154815460c086015192945090916c0c9f2c9cd04674edea40000000906114798b6001600160a01b031660009081526033602052604090205490565b6114839190612d13565b61148d9190612d40565b6114979190612d62565b6114a19190612d00565b905080156115a2576000609785815481106114be576114be612e68565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190612c7e565b905080821115611588576115478183612d62565b836001018190555061158386826097888154811061156757611567612e68565b6000918252602090912001546001600160a01b03169190611abd565b6115a0565b6115a086836097888154811061156757611567612e68565b505b85156115f1576c0c9f2c9cd04674edea400000008360c001516115da896001600160a01b031660009081526033602052604090205490565b6115e49190612d13565b6115ee9190612d40565b82555b50505080806115ff90612e7e565b915050611355565b611612828285611b06565b61161e84848484611b38565b610ced828285611bb6565b60008183116116435761163c8484612d62565b905061072a565b8184106116525750600061072a565b61163c8483612d62565b60008054610100900460ff166116c85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b6116d184611bbf565b6106f48383611c33565b6116e6828285611b06565b6116f38585858585611ca8565b6116fe828285611bb6565b5050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610ced9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d54565b6000811161182c5760405162461bcd60e51b815260206004820152602760248201527f52657761726420616d6f756e74206e6565647320746f2062652068696768657260448201527f207468616e20300000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03821660009081526098602052604090205460ff166118555761185582611e3c565b61185f8183611f06565b5050565b6001600160a01b038181166000818152609860209081526040808320815160e081018352815460ff1615158152600180830154828601526002830154828501526003830154606083015260048301546080830152600583015460a083015260069092015460c08201908152968a168086526099855283862096865295845282852091820154825497519686526033909452918420549195909490916c0c9f2c9cd04674edea400000009161191691612d13565b6119209190612d40565b61192a9190612d62565b6119349190612d00565b905080156119ef576040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190612c7e565b9050808211156119d9576119bb8183612d62565b60018401556119d46001600160a01b0386168883611abd565b6119ed565b6119ed6001600160a01b0386168884611abd565b505b8415611a3e576c0c9f2c9cd04674edea400000008360c00151611a27886001600160a01b031660009081526033602052604090205490565b611a319190612d13565b611a3b9190612d40565b82555b505050505050565b600080611a548686866120f9565b90506001836002811115611a6a57611a6a612e97565b148015611a87575060008480611a8257611a82612d2a565b868809115b15611a9a57611a97600182612d00565b90505b95945050505050565b611aaf83600185611352565b505050565b611aaf826121eb565b6040516001600160a01b038316602482015260448101829052611aaf9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611752565b611b0e611279565b6001600160a01b03811660009081526033602052604090205415611aaf57611aaf81600083611352565b606554611b50906001600160a01b0316853085611705565b611b5a83826122fb565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611ba8929190918252602082015260400190565b60405180910390a350505050565b611aaf816121eb565b600054610100900460ff16611c2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b610e05816123d0565b600054610100900460ff16611c9e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b61185f82826124be565b826001600160a01b0316856001600160a01b031614611ccc57611ccc838683610fe8565b611cd68382612542565b606554611ced906001600160a01b03168584611abd565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611d45929190918252602082015260400190565b60405180910390a45050505050565b6000611da9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126c09092919063ffffffff16565b9050805160001480611dca575080806020019051810190611dca9190612ead565b611aaf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b038116611e925760405162461bcd60e51b815260206004820152600960248201527f302061646472657373000000000000000000000000000000000000000000000060448201526064016107a7565b6097805460018181019092557f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff90180546001600160a01b0390931673ffffffffffffffffffffffffffffffffffffffff1990931683179055600091825260986020526040909120805460ff19169091179055565b611f0e611279565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f799190612c7e565b905080831115611fcb5760405162461bcd60e51b815260206004820152601e60248201527f4445504f5349545f414d4f554e545f455843454544535f42414c414e4345000060448201526064016107a7565b6001600160a01b0382166000908152609860205260409020805460ff166120345760405162461bcd60e51b815260206004820152601860248201527f5245574152445f544f4b454e5f4e4f545f454e41424c4544000000000000000060448201526064016107a7565b428160040154116120685761204c62093a8085612d40565b600582015561205e4262093a80612d00565b60048201556120ed565b600042826004015461207a9190612d62565b9050600082600301544261208e9190612d62565b905060008284600501546120a29190612d13565b905060006120b08385612d00565b6120ba838a612d00565b6120c49190612d40565b9050808560050181905550828560040160008282546120e39190612d00565b9091555050505050505b42600390910155505050565b60008080600019858709858702925082811083820303915050806000036121335783828161212957612129612d2a565b049250505061072a565b8084116121825760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f77000000000000000000000060448201526064016107a7565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60005b60975481101561185f576001600160a01b0382166000908152609960205260408120609780548391908590811061222757612227612e68565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002090506c0c9f2c9cd04674edea40000000609860006097858154811061228c5761228c612e68565b60009182526020808320909101546001600160a01b031683528201929092526040019020600601546122d3856001600160a01b031660009081526033602052604090205490565b6122dd9190612d13565b6122e79190612d40565b9055806122f381612e7e565b9150506121ee565b6001600160a01b0382166123515760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107a7565b61235d60008383611aa3565b806035600082825461236f9190612d00565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361185f60008383611ab4565b600054610100900460ff1661243b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b600080612447836126cf565b9150915081612457576012612459565b805b606580546001600160a01b0390951673ffffffffffffffffffffffffffffffffffffffff1960ff93909316600160a01b02929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090951694909417179092555050565b600054610100900460ff166125295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b60366125358382612f15565b506037611aaf8282612f15565b6001600160a01b0382166125be5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6125ca82600083611aa3565b6001600160a01b038216600090815260336020526040902054818110156126595760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611aaf83600084611ab4565b6060610be084846000856127d9565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829182916001600160a01b0387169161274491612fd5565b600060405180830381855afa9150503d806000811461277f576040519150601f19603f3d011682016040523d82523d6000602084013e612784565b606091505b509150915081801561279857506020815110155b156127cc576000818060200190518101906127b39190612c7e565b905060ff81116127ca576001969095509350505050565b505b5060009485945092505050565b6060824710156128515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107a7565b600080866001600160a01b0316858760405161286d9190612fd5565b60006040518083038185875af1925050503d80600081146128aa576040519150601f19603f3d011682016040523d82523d6000602084013e6128af565b606091505b50915091506128c0878383876128cb565b979650505050505050565b6060831561293a578251600003612933576001600160a01b0385163b6129335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a7565b5081610be0565b610be0838381511561294f5781518083602001fd5b8060405162461bcd60e51b81526004016107a7919061298d565b60005b8381101561298457818101518382015260200161296c565b50506000910152565b60208152600082518060208401526129ac816040850160208701612969565b601f01601f19169190910160400192915050565b6000602082840312156129d257600080fd5b5035919050565b6001600160a01b0381168114610e0557600080fd5b60008060408385031215612a0157600080fd5b8235612a0c816129d9565b946020939093013593505050565b600080600060608486031215612a2f57600080fd5b8335612a3a816129d9565b92506020840135612a4a816129d9565b929592945050506040919091013590565b600060208284031215612a6d57600080fd5b813561072a816129d9565b60008060408385031215612a8b57600080fd5b823591506020830135612a9d816129d9565b809150509250929050565b60008060408385031215612abb57600080fd5b8235612ac6816129d9565b91506020830135612a9d816129d9565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612afd57600080fd5b813567ffffffffffffffff80821115612b1857612b18612ad6565b604051601f8301601f19908116603f01168101908282118183101715612b4057612b40612ad6565b81604052838152866020858801011115612b5957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612b8e57600080fd5b8335612b99816129d9565b9250602084013567ffffffffffffffff80821115612bb657600080fd5b612bc287838801612aec565b93506040860135915080821115612bd857600080fd5b50612be586828701612aec565b9150509250925092565b600080600060608486031215612c0457600080fd5b833592506020840135612c16816129d9565b91506040840135612c26816129d9565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612c725783516001600160a01b031683529284019291840191600101612c4d565b50909695505050505050565b600060208284031215612c9057600080fd5b5051919050565b600181811c90821680612cab57607f821691505b602082108103612ccb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156106e0576106e0612cd1565b808201808211156106e0576106e0612cd1565b80820281158282048414176106e0576106e0612cd1565b634e487b7160e01b600052601260045260246000fd5b600082612d5d57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106e0576106e0612cd1565b600181815b80851115612db0578160001904821115612d9657612d96612cd1565b80851615612da357918102915b93841c9390800290612d7a565b509250929050565b600082612dc7575060016106e0565b81612dd4575060006106e0565b8160018114612dea5760028114612df457612e10565b60019150506106e0565b60ff841115612e0557612e05612cd1565b50506001821b6106e0565b5060208310610133831016604e8410600b8410161715612e33575081810a6106e0565b612e3d8383612d75565b8060001904821115612e5157612e51612cd1565b029392505050565b600061072a60ff841683612db8565b634e487b7160e01b600052603260045260246000fd5b600060018201612e9057612e90612cd1565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebf57600080fd5b8151801515811461072a57600080fd5b601f821115611aaf57600081815260208120601f850160051c81016020861015612ef65750805b601f850160051c820191505b81811015611a3e57828155600101612f02565b815167ffffffffffffffff811115612f2f57612f2f612ad6565b612f4381612f3d8454612c97565b84612ecf565b602080601f831160018114612f785760008415612f605750858301515b600019600386901b1c1916600185901b178555611a3e565b600085815260208120601f198616915b82811015612fa757888601518255948401946001909101908401612f88565b5085821015612fc55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251612fe7818460208701612969565b919091019291505056fea2646970667358221220218821989b9209406e5dee5a8af038aa63935d6c99312903c1a1f6fb58eb6ca464736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061025c5760003560e01c806394bf804d11610145578063c4f59f9b116100bd578063ce96cb771161008c578063d905777e11610071578063d905777e14610583578063dd62ed3e14610596578063ef8b30f7146104c457600080fd5b8063ce96cb771461055d578063d279c1911461057057600080fd5b8063c4f59f9b146104af578063c63d75b614610347578063c6e6f592146104c4578063cbecf6b5146104d757600080fd5b8063a9059cbb11610114578063b460af94116100f9578063b460af9414610476578063b66503cf14610489578063ba0876521461049c57600080fd5b8063a9059cbb14610450578063b3d7f6b91461046357600080fd5b806394bf804d146103db57806395d89b41146103ee57806397e14f1c146103f6578063a457c2d71461043d57600080fd5b806339509351116101d85780636e553f65116101a75780637bb7bed11161018c5780637bb7bed1146103a257806380ac8228146103b557806390657147146103c857600080fd5b80636e553f651461036657806370a082311461037957600080fd5b80633950935114610334578063402d267d146103475780634cdad506146102915780634e71d92d1461035c57600080fd5b80630a28a4771161022f57806323b872dd1161021457806323b872dd146102e2578063313ce567146102f557806338d52e0f1461030f57600080fd5b80630a28a477146102c757806318160ddd146102da57600080fd5b806301e1d1141461026157806306fdde031461027c57806307a2d13a14610291578063095ea7b3146102a4575b600080fd5b6102696105cf565b6040519081526020015b60405180910390f35b610284610641565b604051610273919061298d565b61026961029f3660046129c0565b6106d3565b6102b76102b23660046129ee565b6106e6565b6040519015158152602001610273565b6102696102d53660046129c0565b6106fe565b603554610269565b6102b76102f0366004612a1a565b61070b565b6102fd610731565b60405160ff9091168152602001610273565b6065546001600160a01b03165b6040516001600160a01b039091168152602001610273565b6102b76103423660046129ee565b61074b565b610269610355366004612a5b565b5060001990565b61036461078a565b005b610269610374366004612a78565b6107a0565b610269610387366004612a5b565b6001600160a01b031660009081526033602052604090205490565b61031c6103b03660046129c0565b6107c9565b6102696103c3366004612aa8565b6107f3565b6102b76103d6366004612b79565b610948565b6102696103e9366004612a78565b610a73565b610284610a8d565b610428610404366004612aa8565b60996020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610273565b6102b761044b3660046129ee565b610a9c565b6102b761045e3660046129ee565b610b51565b6102696104713660046129c0565b610b5f565b610269610484366004612bef565b610b6c565b6103646104973660046129ee565b610be8565b6102696104aa366004612bef565b610cf3565b6104b7610d67565b6040516102739190612c31565b6102696104d23660046129c0565b610dc8565b6105266104e5366004612a5b565b609860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015460ff9095169593949293919290919087565b6040805197151588526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610273565b61026961056b366004612a5b565b610dd5565b61036461057e366004612a5b565b610df9565b610269610591366004612a5b565b610e08565b6102696105a4366004612aa8565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6065546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063c9190612c7e565b905090565b60606036805461065090612c97565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90612c97565b80156106c95780601f1061069e576101008083540402835291602001916106c9565b820191906000526020600020905b8154815290600101906020018083116106ac57829003601f168201915b5050505050905090565b60006106e0826000610e26565b92915050565b6000336106f4818585610e60565b5060019392505050565b60006106e0826001610fb8565b600033610719858285610fe8565b610724858585611074565b60019150505b9392505050565b60008060655461063c9190600160a01b900460ff16612ce7565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091906106f49082908690610785908790612d00565b610e60565b610792611279565b61079e33600133611352565b565b60006107b0565b60405180910390fd5b60006107bb84610dc8565b905061072a33848684611607565b609781815481106107d957600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038083166000818152609860209081526040808320815160e081018352815460ff1615158152600182015481850152600282015481840190815260038301546060830152600483015460808301908152600584015460a084015260069093015460c08301908152978916865260998552838620968652959093529083209451935190519294919391928591610890914290611629565b905060008460a00151826108a49190612d13565b90506108af60355490565b6108c6826c0c9f2c9cd04674edea40000000612d13565b6108d09190612d40565b6108da9084612d00565b9250836001015484600001546c0c9f2c9cd04674edea40000000856109148b6001600160a01b031660009081526033602052604090205490565b61091e9190612d13565b6109289190612d40565b6109329190612d62565b61093c9190612d00565b98975050505050505050565b60008054610100900460ff16158080156109695750600054600160ff909116105b806109835750303b158015610983575060005460ff166001145b6109f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107a7565b6000805460ff191660011790558015610a18576000805461ff0019166101001790555b610a2385858561165c565b91508015610a6b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b509392505050565b600080610a7f84610b5f565b905061072a33848387611607565b60606037805461065090612c97565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015610b395760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107a7565b610b468286868403610e60565b506001949350505050565b6000336106f4818585611074565b60006106e0826001610e26565b6000610b7782610dd5565b841115610bc65760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d61780060448201526064016107a7565b6000610bd1856106fe565b9050610be033858588856116db565b949350505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612c7e565b9050610c6a6001600160a01b038416333085611705565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd59190612c7e565b9050610ce18282612d62565b9250610ced84846117b6565b50505050565b6000610cfe82610e08565b841115610d4d5760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d617800000060448201526064016107a7565b6000610d58856106d3565b9050610be033858584896116db565b606060978054806020026020016040519081016040528092919081815260200182805480156106c957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da1575050505050905090565b60006106e0826000610fb8565b6001600160a01b0381166000908152603360205260408120546106e0906000610e26565b610e0533600183611863565b50565b6001600160a01b0381166000908152603360205260408120546106e0565b600061072a610e336105cf565b610e3e906001612d00565b610e4a6000600a612e59565b603554610e579190612d00565b85919085611a46565b6001600160a01b038316610edb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b038216610f575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061072a610fc882600a612e59565b603554610fd59190612d00565b610fdd6105cf565b610e57906001612d00565b6001600160a01b038381166000908152603460209081526040808320938616835292905220546000198114610ced57818110156110675760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107a7565b610ced8484848403610e60565b6001600160a01b0383166110f05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03821661116c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b611177838383611aa3565b6001600160a01b038316600090815260336020526040902054818110156112065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112669086815260200190565b60405180910390a3610ced848484611ab4565b60005b609754811015610e05576000609860006097848154811061129f5761129f612e68565b60009182526020808320909101546001600160a01b031683528201929092526040018120600281015460048201549193506112db914290611629565b905060008260050154826112ef9190612d13565b90506112fa60355490565b611311826c0c9f2c9cd04674edea40000000612d13565b61131b9190612d40565b83600601600082825461132e9190612d00565b9091555050426002909301929092555081905061134a81612e7e565b91505061127c565b60005b609754811015610ced576000609860006097848154811061137857611378612e68565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220835160e081018552815460ff16151581526001820154818401526002820154818601526003820154606082015260048201546080820152600582015460a082015260069091015460c0820152938916825260999052908120609780549394509192909183918690811061141657611416612e68565b60009182526020808320909101546001600160a01b0316835282019290925260400181206001810154815460c086015192945090916c0c9f2c9cd04674edea40000000906114798b6001600160a01b031660009081526033602052604090205490565b6114839190612d13565b61148d9190612d40565b6114979190612d62565b6114a19190612d00565b905080156115a2576000609785815481106114be576114be612e68565b6000918252602090912001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190612c7e565b905080821115611588576115478183612d62565b836001018190555061158386826097888154811061156757611567612e68565b6000918252602090912001546001600160a01b03169190611abd565b6115a0565b6115a086836097888154811061156757611567612e68565b505b85156115f1576c0c9f2c9cd04674edea400000008360c001516115da896001600160a01b031660009081526033602052604090205490565b6115e49190612d13565b6115ee9190612d40565b82555b50505080806115ff90612e7e565b915050611355565b611612828285611b06565b61161e84848484611b38565b610ced828285611bb6565b60008183116116435761163c8484612d62565b905061072a565b8184106116525750600061072a565b61163c8483612d62565b60008054610100900460ff166116c85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b6116d184611bbf565b6106f48383611c33565b6116e6828285611b06565b6116f38585858585611ca8565b6116fe828285611bb6565b5050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610ced9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d54565b6000811161182c5760405162461bcd60e51b815260206004820152602760248201527f52657761726420616d6f756e74206e6565647320746f2062652068696768657260448201527f207468616e20300000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03821660009081526098602052604090205460ff166118555761185582611e3c565b61185f8183611f06565b5050565b6001600160a01b038181166000818152609860209081526040808320815160e081018352815460ff1615158152600180830154828601526002830154828501526003830154606083015260048301546080830152600583015460a083015260069092015460c08201908152968a168086526099855283862096865295845282852091820154825497519686526033909452918420549195909490916c0c9f2c9cd04674edea400000009161191691612d13565b6119209190612d40565b61192a9190612d62565b6119349190612d00565b905080156119ef576040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a79190612c7e565b9050808211156119d9576119bb8183612d62565b60018401556119d46001600160a01b0386168883611abd565b6119ed565b6119ed6001600160a01b0386168884611abd565b505b8415611a3e576c0c9f2c9cd04674edea400000008360c00151611a27886001600160a01b031660009081526033602052604090205490565b611a319190612d13565b611a3b9190612d40565b82555b505050505050565b600080611a548686866120f9565b90506001836002811115611a6a57611a6a612e97565b148015611a87575060008480611a8257611a82612d2a565b868809115b15611a9a57611a97600182612d00565b90505b95945050505050565b611aaf83600185611352565b505050565b611aaf826121eb565b6040516001600160a01b038316602482015260448101829052611aaf9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611752565b611b0e611279565b6001600160a01b03811660009081526033602052604090205415611aaf57611aaf81600083611352565b606554611b50906001600160a01b0316853085611705565b611b5a83826122fb565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78484604051611ba8929190918252602082015260400190565b60405180910390a350505050565b611aaf816121eb565b600054610100900460ff16611c2a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b610e05816123d0565b600054610100900460ff16611c9e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b61185f82826124be565b826001600160a01b0316856001600160a01b031614611ccc57611ccc838683610fe8565b611cd68382612542565b606554611ced906001600160a01b03168584611abd565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611d45929190918252602082015260400190565b60405180910390a45050505050565b6000611da9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126c09092919063ffffffff16565b9050805160001480611dca575080806020019051810190611dca9190612ead565b611aaf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b038116611e925760405162461bcd60e51b815260206004820152600960248201527f302061646472657373000000000000000000000000000000000000000000000060448201526064016107a7565b6097805460018181019092557f354a83ed9988f79f6038d4c7a7dadbad8af32f4ad6df893e0e5807a1b1944ff90180546001600160a01b0390931673ffffffffffffffffffffffffffffffffffffffff1990931683179055600091825260986020526040909120805460ff19169091179055565b611f0e611279565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f799190612c7e565b905080831115611fcb5760405162461bcd60e51b815260206004820152601e60248201527f4445504f5349545f414d4f554e545f455843454544535f42414c414e4345000060448201526064016107a7565b6001600160a01b0382166000908152609860205260409020805460ff166120345760405162461bcd60e51b815260206004820152601860248201527f5245574152445f544f4b454e5f4e4f545f454e41424c4544000000000000000060448201526064016107a7565b428160040154116120685761204c62093a8085612d40565b600582015561205e4262093a80612d00565b60048201556120ed565b600042826004015461207a9190612d62565b9050600082600301544261208e9190612d62565b905060008284600501546120a29190612d13565b905060006120b08385612d00565b6120ba838a612d00565b6120c49190612d40565b9050808560050181905550828560040160008282546120e39190612d00565b9091555050505050505b42600390910155505050565b60008080600019858709858702925082811083820303915050806000036121335783828161212957612129612d2a565b049250505061072a565b8084116121825760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f77000000000000000000000060448201526064016107a7565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60005b60975481101561185f576001600160a01b0382166000908152609960205260408120609780548391908590811061222757612227612e68565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002090506c0c9f2c9cd04674edea40000000609860006097858154811061228c5761228c612e68565b60009182526020808320909101546001600160a01b031683528201929092526040019020600601546122d3856001600160a01b031660009081526033602052604090205490565b6122dd9190612d13565b6122e79190612d40565b9055806122f381612e7e565b9150506121ee565b6001600160a01b0382166123515760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107a7565b61235d60008383611aa3565b806035600082825461236f9190612d00565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361185f60008383611ab4565b600054610100900460ff1661243b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b600080612447836126cf565b9150915081612457576012612459565b805b606580546001600160a01b0390951673ffffffffffffffffffffffffffffffffffffffff1960ff93909316600160a01b02929092167fffffffffffffffffffffff00000000000000000000000000000000000000000090951694909417179092555050565b600054610100900460ff166125295760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a7565b60366125358382612f15565b506037611aaf8282612f15565b6001600160a01b0382166125be5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6125ca82600083611aa3565b6001600160a01b038216600090815260336020526040902054818110156126595760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016107a7565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611aaf83600084611ab4565b6060610be084846000856127d9565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290516000918291829182916001600160a01b0387169161274491612fd5565b600060405180830381855afa9150503d806000811461277f576040519150601f19603f3d011682016040523d82523d6000602084013e612784565b606091505b509150915081801561279857506020815110155b156127cc576000818060200190518101906127b39190612c7e565b905060ff81116127ca576001969095509350505050565b505b5060009485945092505050565b6060824710156128515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107a7565b600080866001600160a01b0316858760405161286d9190612fd5565b60006040518083038185875af1925050503d80600081146128aa576040519150601f19603f3d011682016040523d82523d6000602084013e6128af565b606091505b50915091506128c0878383876128cb565b979650505050505050565b6060831561293a578251600003612933576001600160a01b0385163b6129335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a7565b5081610be0565b610be0838381511561294f5781518083602001fd5b8060405162461bcd60e51b81526004016107a7919061298d565b60005b8381101561298457818101518382015260200161296c565b50506000910152565b60208152600082518060208401526129ac816040850160208701612969565b601f01601f19169190910160400192915050565b6000602082840312156129d257600080fd5b5035919050565b6001600160a01b0381168114610e0557600080fd5b60008060408385031215612a0157600080fd5b8235612a0c816129d9565b946020939093013593505050565b600080600060608486031215612a2f57600080fd5b8335612a3a816129d9565b92506020840135612a4a816129d9565b929592945050506040919091013590565b600060208284031215612a6d57600080fd5b813561072a816129d9565b60008060408385031215612a8b57600080fd5b823591506020830135612a9d816129d9565b809150509250929050565b60008060408385031215612abb57600080fd5b8235612ac6816129d9565b91506020830135612a9d816129d9565b634e487b7160e01b600052604160045260246000fd5b600082601f830112612afd57600080fd5b813567ffffffffffffffff80821115612b1857612b18612ad6565b604051601f8301601f19908116603f01168101908282118183101715612b4057612b40612ad6565b81604052838152866020858801011115612b5957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215612b8e57600080fd5b8335612b99816129d9565b9250602084013567ffffffffffffffff80821115612bb657600080fd5b612bc287838801612aec565b93506040860135915080821115612bd857600080fd5b50612be586828701612aec565b9150509250925092565b600080600060608486031215612c0457600080fd5b833592506020840135612c16816129d9565b91506040840135612c26816129d9565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612c725783516001600160a01b031683529284019291840191600101612c4d565b50909695505050505050565b600060208284031215612c9057600080fd5b5051919050565b600181811c90821680612cab57607f821691505b602082108103612ccb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156106e0576106e0612cd1565b808201808211156106e0576106e0612cd1565b80820281158282048414176106e0576106e0612cd1565b634e487b7160e01b600052601260045260246000fd5b600082612d5d57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106e0576106e0612cd1565b600181815b80851115612db0578160001904821115612d9657612d96612cd1565b80851615612da357918102915b93841c9390800290612d7a565b509250929050565b600082612dc7575060016106e0565b81612dd4575060006106e0565b8160018114612dea5760028114612df457612e10565b60019150506106e0565b60ff841115612e0557612e05612cd1565b50506001821b6106e0565b5060208310610133831016604e8410600b8410161715612e33575081810a6106e0565b612e3d8383612d75565b8060001904821115612e5157612e51612cd1565b029392505050565b600061072a60ff841683612db8565b634e487b7160e01b600052603260045260246000fd5b600060018201612e9057612e90612cd1565b5060010190565b634e487b7160e01b600052602160045260246000fd5b600060208284031215612ebf57600080fd5b8151801515811461072a57600080fd5b601f821115611aaf57600081815260208120601f850160051c81016020861015612ef65750805b601f850160051c820191505b81811015611a3e57828155600101612f02565b815167ffffffffffffffff811115612f2f57612f2f612ad6565b612f4381612f3d8454612c97565b84612ecf565b602080601f831160018114612f785760008415612f605750858301515b600019600386901b1c1916600185901b178555611a3e565b600085815260208120601f198616915b82811015612fa757888601518255948401946001909101908401612f88565b5085821015612fc55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251612fe7818460208701612969565b919091019291505056fea2646970667358221220218821989b9209406e5dee5a8af038aa63935d6c99312903c1a1f6fb58eb6ca464736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
