{
  "_format": "hh-sol-artifact-1",
  "contractName": "GmxFloor",
  "sourceName": "contracts/gmx/GmxFloor.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_gmx",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_reserveToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_backedSupply",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_baseMintPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_mintMultiplier",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_multiplierPrecision",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minAuthorizations",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "ClearAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignalApprove",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignalApproveNFT",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignalApproveNFTs",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignalPendingAction",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "SignalSetAdmin",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BASIS_POINTS_DIVISOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BURN_BASIS_POINTS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRICE_PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "actionsNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "approveNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "approveNFTs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "backedSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "baseMintPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_minOut",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "burn",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "getBurnAmountOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getMintPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gmx",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "_signers",
          "type": "address[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isHandler",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isInitialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isSigner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minAuthorizations",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_maxCost",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintMultiplier",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintedSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "multiplierPrecision",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "pendingActions",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "reserveToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "setAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_backedSupply",
          "type": "uint256"
        }
      ],
      "name": "setBackedSupply",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_handler",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_isHandler",
          "type": "bool"
        }
      ],
      "name": "setHandler",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_mintMultiplier",
          "type": "uint256"
        }
      ],
      "name": "setMintMultiplier",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "signApprove",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "signApproveNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "signApproveNFTs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_nonce",
          "type": "uint256"
        }
      ],
      "name": "signSetAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "signalApprove",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "signalApproveNFT",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_spender",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "_tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "signalApproveNFTs",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_admin",
          "type": "address"
        }
      ],
      "name": "signalSetAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "signedActions",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "signers",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "signersLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051612fd1380380612fd1833981810160405260e081101561003357600080fd5b508051602082015160408301516060840151608085015160a086015160c0909601516001600055600480546001600160a01b03199081163317909155600391909155600980546001600160a01b03978816908316179055600a805496909516951694909417909255600b55600c55600d55600f55612f1b806100b66000396000f3fe608060405234801561001057600080fd5b50600436106101d85760003560e01c80630b13beca146101dd578063126082cf14610215578063181fcd331461022f5780632079fb9a146102e95780632415ab6e146103225780632494b7eb1461032a578063287800c91461034757806331e67c711461034f578063392e53cd146103575780633acd81a51461037357806341f684f31461037b57806342a1fcee1461038357806346ea87af1461043f5780634dc5ecb3146104655780635fe15ad7146104a1578063749388c4146104a957806375fd490c146104db5780637df73e27146105095780638559dff31461052f57806387c6d4f91461053757806395082d25146105635780639cb7de4b1461056b5780639fddaac114610599578063a224cee7146105cf578063a4c04bb714610670578063a7f93ebd14610678578063b82ce26114610680578063c1bd8cf91461069d578063c616b592146106a5578063dce6e18d146106ad578063ddf67a9f146106e3578063e30569e51461071f578063e7d3fe6b1461073c578063eb0eec481461076e578063f00cb9421461078b578063f23f977514610847578063f4325d6714610883578063f466634b1461088b578063f52dc4f7146108c1578063f851a440146108fd575b600080fd5b610213600480360360608110156101f357600080fd5b506001600160a01b03813581169160208101359091169060400135610905565b005b61021d610a75565b60408051918252519081900360200190f35b6102136004803603606081101561024557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460208302840111600160201b831117156102ab57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a7b945050505050565b610306600480360360208110156102ff57600080fd5b5035610c71565b604080516001600160a01b039092168252519081900360200190f35b61021d610c98565b6102136004803603602081101561034057600080fd5b5035610c9e565b61021d610d46565b610306610d4c565b61035f610d5b565b604080519115158252519081900360200190f35b61021d610d64565b61021d610d6a565b6102136004803603608081101561039957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103cc57600080fd5b8201836020820111156103de57600080fd5b803590602001918460208302840111600160201b831117156103ff57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610d70915050565b61035f6004803603602081101561045557600080fd5b50356001600160a01b0316610f66565b6102136004803603608081101561047b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f7b565b61021d61110f565b61021d600480360360608110156104bf57600080fd5b50803590602081013590604001356001600160a01b0316611115565b610213600480360360408110156104f157600080fd5b506001600160a01b038135811691602001351661130a565b61035f6004803603602081101561051f57600080fd5b50356001600160a01b0316611493565b61021d6114a8565b61035f6004803603604081101561054d57600080fd5b506001600160a01b0381351690602001356114ae565b61021d6114ce565b6102136004803603604081101561058157600080fd5b506001600160a01b03813516906020013515156114de565b610213600480360360608110156105af57600080fd5b506001600160a01b03813581169160208101359091169060400135611556565b610213600480360360208110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506116d6945050505050565b61021d61172f565b61021d611735565b61021d6004803603602081101561069657600080fd5b503561176b565b61021d611816565b61021d61181c565b610213600480360360608110156106c357600080fd5b506001600160a01b03813581169160208101359091169060400135611822565b610213600480360360808110156106f957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561198f565b61035f6004803603602081101561073557600080fd5b5035611b5a565b61021d6004803603606081101561075257600080fd5b50803590602081013590604001356001600160a01b0316611b6f565b6102136004803603602081101561078457600080fd5b5035611de5565b610213600480360360808110156107a157600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156107d457600080fd5b8201836020820111156107e657600080fd5b803590602001918460208302840111600160201b8311171561080757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250611e77915050565b6102136004803603608081101561085d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611fb7565b610306612139565b610213600480360360608110156108a157600080fd5b506001600160a01b03813581169160208101359091169060400135612148565b610213600480360360808110156108d757600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612309565b61030661240a565b6002600054141561094b576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b0316331461099d576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e8301526052820185905260728083018590528351808403909101815260929092019092528051910120610a118183612419565b604080516001600160a01b03808816825286166020820152808201859052606081018390526080810184905290517fcd9ba83b63715dc15ac193645d6e925bf4b487c94b73d709b8b6dea608efd4cc9181900360a00190a150506001600055505050565b61271081565b60026000541415610ac1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314610b13576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040516a617070726f76654e46547360a81b60208083019182526001600160601b0319606088811b8216602b86015287901b16603f840152845160009388938893889388936053019180860191028083838b5b83811015610b89578181015183820152602001610b71565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050610bbe8183612419565b7ff9d0354d71c261982d98abd09b735f3663b2d7275e2569ad5fd907a4092765f9858585848660405180866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610c4e578181015183820152602001610c36565b50505050905001965050505050505060405180910390a150506001600055505050565b60058181548110610c7e57fe5b6000918252602090912001546001600160a01b0316905081565b600f5481565b6004546001600160a01b03163314610ceb576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b600b548111610d41576040805162461bcd60e51b815260206004820152601f60248201527f476d78466c6f6f723a20696e76616c6964205f6261636b6564537570706c7900604482015290519081900360640190fd5b600b55565b60035481565b6009546001600160a01b031681565b60015460ff1681565b600d5481565b60055490565b60026000541415610db6576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314610e08576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60008484848460405160200180806a617070726f76654e46547360a81b815250600b01856001600160a01b031660601b8152601401846001600160a01b031660601b8152601401838051906020019060200280838360005b83811015610e78578181015183820152602001610e60565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050610eac81612472565b610eb5816124bf565b60005b8351811015610f4f57856001600160a01b031663095ea7b386868481518110610edd57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505060019092019150610eb89050565b50610f5a81836125a5565b50506001600055505050565b60106020526000908152604090205460ff1681565b60026000541415610fc1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314611013576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f909201909252805191012061107881612472565b611081816124bf565b846001600160a01b031663095ea7b385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b505050506040513d602081101561110257600080fd5b50610f5a905081836125a5565b61232881565b3360009081526010602052604081205460ff1661116f576040805162461bcd60e51b815260206004820152601360248201527223b6bc233637b7b91d103337b93134b23232b760691b604482015290519081900360640190fd5b600260005414156111b5576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260005583611208576040805162461bcd60e51b815260206004820152601960248201527811db5e119b1bdbdc8e881a5b9d985b1a590817d85b5bdd5b9d603a1b604482015290519081900360640190fd5b60006112138561176b565b90508381101561126a576040805162461bcd60e51b815260206004820181905260248201527f476d78466c6f6f723a20696e73756666696369656e7420616d6f756e744f7574604482015290519081900360640190fd5b600b54611277908661265e565b600b5560095460408051632770a7eb60e21b81523360048201526024810188905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b5050600a546112fd92506001600160a01b0316905084836126a9565b6001600055949350505050565b60026000541415611350576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166113a6576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6002805460010190819055604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c830152605080830185905283518084039091018152607090920190925280519101206114118183612419565b336000908152600860209081526040808320848452825291829020805460ff1916600117905581516001600160a01b0387811682528616918101919091528082018390526060810184905290517f4fc9433645aa0a3670e9185496bbd752209fed7a9696fb8a954a0db30ef927b09181900360800190a1505060016000555050565b60066020526000908152604090205460ff1681565b600c5481565b600860209081526000928352604080842090915290825290205460ff1681565b68327cb2734119d3b7a9601e1b81565b6004546001600160a01b0316331461152b576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6002600054141561159c576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166115f2576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c8301526050808301859052835180840390910181526070909201909252805191012061165181612472565b61165a816124bf565b836001600160a01b031663704b6c02846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116a957600080fd5b505af11580156116bd573d6000803e3d6000fd5b505050506116cb81836125a5565b505060016000555050565b6004546001600160a01b03163314611723576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b61172c81612700565b50565b60025481565b600061176661175d600f54611757600d54600e5461280590919063ffffffff16565b9061285e565b600c549061289d565b905090565b600a54604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d60208110156117e557600080fd5b5051600b5490915061180f9061271090611757906123289061180990838988612805565b90612805565b9392505050565b600e5481565b600b5481565b60026000541415611868576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b031633146118ba576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f909201909252805191012061192b8183612419565b604080516001600160a01b03808816825286166020820152808201859052606081018390526080810184905290517fc19251bf5f704ddc3d5babe6f4e5bde0dded20b19f7844716861821ab3163cd79181900360a00190a150506001600055505050565b600260005414156119d5576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff16611a2b576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e8301526052820185905260728083018590528351808403909101815260929092019092528051910120611a9381612472565b33600090815260086020908152604080832084845290915290205460ff1615611b02576040805162461bcd60e51b815260206004820152601c60248201527b151bdad95b93585b9859d95c8e88185b1c9958591e481cda59db995960221b604482015290519081900360640190fd5b336000908152600860209081526040808320848452825291829020805460ff1916600117905581518381529081018490528151600080516020612e9c833981519152929181900390910190a150506001600055505050565b60076020526000908152604090205460ff1681565b3360009081526010602052604081205460ff16611bc9576040805162461bcd60e51b815260206004820152601360248201527223b6bc233637b7b91d103337b93134b23232b760691b604482015290519081900360640190fd5b60026000541415611c0f576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260005583611c62576040805162461bcd60e51b815260206004820152601960248201527811db5e119b1bdbdc8e881a5b9d985b1a590817d85b5bdd5b9d603a1b604482015290519081900360640190fd5b6000611c6c611735565b90506000611c95611c8e600f54611757600d548a61280590919063ffffffff16565b839061289d565b90506000611ca86002611757858561289d565b90506000611cc668327cb2734119d3b7a9601e1b6117578a85612805565b905086811115611d1b576040805162461bcd60e51b815260206004820152601b60248201527a11db5e119b1bdbdc8e8817db585e10dbdcdd08195e18d959591959602a1b604482015290519081900360640190fd5b600e54611d28908961289d565b600e55600b54611d38908961289d565b600b55600a54611d53906001600160a01b03163330846128f5565b6009546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018c90529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611da957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b505050506040513d6020811015611dd357600080fd5b50506001600055979650505050505050565b6004546001600160a01b03163314611e32576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b600d548111611e725760405162461bcd60e51b8152600401808060200182810382526021815260200180612e386021913960400191505060405180910390fd5b600d55565b60026000541415611ebd576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff16611f13576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60008484848460405160200180806a617070726f76654e46547360a81b815250600b01856001600160a01b031660601b8152601401846001600160a01b031660601b8152601401838051906020019060200280838360005b83811015611f83578181015183820152602001611f6b565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050611a9381612472565b60026000541415611ffd576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b0316331461204f576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e83015260528201859052607280830185905283518084039091018152609290920190925280519101206120b781612472565b6120c0816124bf565b846001600160a01b031663095ea7b385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561211757600080fd5b505af115801561212b573d6000803e3d6000fd5b50505050610f5a81836125a5565b600a546001600160a01b031681565b6002600054141561218e576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166121e4576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c8301526050808301859052835180840390910181526070909201909252805191012061224381612472565b33600090815260086020908152604080832084845290915290205460ff16156122b2576040805162461bcd60e51b815260206004820152601c60248201527b151bdad95b93585b9859d95c8e88185b1c9958591e481cda59db995960221b604482015290519081900360640190fd5b336000908152600860209081526040808320848452825291829020805460ff1916600117905581518381529081018490528151600080516020612e9c833981519152929181900390910190a1505060016000555050565b6002600054141561234f576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166123a5576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f9092019092528051910120611a9381612472565b6004546001600160a01b031681565b600082815260076020908152604091829020805460ff19166001179055815184815290810183905281517f64df01c46eb530dc540770a0b88cc32f0b8c2b371a546ae0b13cc8ca6671fff9929181900390910190a15050565b60008181526007602052604090205460ff1661172c5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e596022913960400191505060405180910390fd5b6000805b600554811015612523576000600582815481106124dc57fe5b60009182526020808320909101546001600160a01b031680835260088252604080842088855290925291205490915060ff161561251a576001909201915b506001016124c3565b50806125605760405162461bcd60e51b8152600401808060200182810382526023815260200180612dcf6023913960400191505060405180910390fd5b6003548110156125a15760405162461bcd60e51b8152600401808060200182810382526028815260200180612da76028913960400191505060405180910390fd5b5050565b60008281526007602052604090205460ff16612608576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d616e616765723a20696e76616c6964205f616374696f6e000000604482015290519081900360640190fd5b600082815260076020908152604091829020805460ff19169055815184815290810183905281517ff4640d39061e643d9b802cb3725953405344555ad6dbb1cbdb0495f3eccb8e68929181900390910190a15050565b60006126a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612955565b90505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526126fb9084906129ec565b505050565b6004546001600160a01b0316331461274d576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60015460ff161561278f5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d866021913960400191505060405180910390fd5b6001805460ff19168117905580516127ae906005906020840190612ce1565b5060005b81518110156125a15760008282815181106127c957fe5b6020908102919091018101516001600160a01b03166000908152600690915260409020805460ff191660019081179091559190910190506127b2565b600082612814575060006126a3565b8282028284828161282157fe5b04146126a05760405162461bcd60e51b8152600401808060200182810382526021815260200180612e7b6021913960400191505060405180910390fd5b60006126a083836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250612a9d565b6000828201838110156126a0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261294f9085906129ec565b50505050565b600081848411156129e45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a9578181015183820152602001612991565b50505050905090810190601f1680156129d65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6060612a41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b029092919063ffffffff16565b8051909150156126fb57808060200190516020811015612a6057600080fd5b50516126fb5760405162461bcd60e51b815260040180806020018281038252602a815260200180612ebc602a913960400191505060405180910390fd5b60008183612aec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156129a9578181015183820152602001612991565b506000838581612af857fe5b0495945050505050565b6060612b118484600085612b19565b949350505050565b606082471015612b5a5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e126026913960400191505060405180910390fd5b612b6385612c75565b612bb4576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612bf35780518252601f199092019160209182019101612bd4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b5091509150612c6a828286612c7b565b979650505050505050565b3b151590565b60608315612c8a57508161180f565b825115612c9a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156129a9578181015183820152602001612991565b828054828255906000526020600020908101928215612d36579160200282015b82811115612d3657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612d01565b50612d42929150612d46565b5090565b5b80821115612d425780546001600160a01b0319168155600101612d4756fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00546f6b656e4d616e616765723a20616c726561647920696e697469616c697a6564546f6b656e4d616e616765723a20696e73756666696369656e7420617574686f72697a6174696f6e546f6b656e4d616e616765723a20616374696f6e206e6f7420617574686f72697a6564546f6b656e4d616e616765723a20666f7262696464656e000000000000000000416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c476d78466c6f6f723a20696e76616c6964205f6d696e744d756c7469706c696572546f6b656e4d616e616765723a20616374696f6e206e6f74207369676e616c6c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77aae28fe5531fe5dfb8d12409392ec67b50c825dd06233312cb6aeaddd16cbd225361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220009e8c6f46c854a954df41cce27473d9cbe646b1ad88059ab41414d7d29a9add64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101d85760003560e01c80630b13beca146101dd578063126082cf14610215578063181fcd331461022f5780632079fb9a146102e95780632415ab6e146103225780632494b7eb1461032a578063287800c91461034757806331e67c711461034f578063392e53cd146103575780633acd81a51461037357806341f684f31461037b57806342a1fcee1461038357806346ea87af1461043f5780634dc5ecb3146104655780635fe15ad7146104a1578063749388c4146104a957806375fd490c146104db5780637df73e27146105095780638559dff31461052f57806387c6d4f91461053757806395082d25146105635780639cb7de4b1461056b5780639fddaac114610599578063a224cee7146105cf578063a4c04bb714610670578063a7f93ebd14610678578063b82ce26114610680578063c1bd8cf91461069d578063c616b592146106a5578063dce6e18d146106ad578063ddf67a9f146106e3578063e30569e51461071f578063e7d3fe6b1461073c578063eb0eec481461076e578063f00cb9421461078b578063f23f977514610847578063f4325d6714610883578063f466634b1461088b578063f52dc4f7146108c1578063f851a440146108fd575b600080fd5b610213600480360360608110156101f357600080fd5b506001600160a01b03813581169160208101359091169060400135610905565b005b61021d610a75565b60408051918252519081900360200190f35b6102136004803603606081101561024557600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561027857600080fd5b82018360208201111561028a57600080fd5b803590602001918460208302840111600160201b831117156102ab57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a7b945050505050565b610306600480360360208110156102ff57600080fd5b5035610c71565b604080516001600160a01b039092168252519081900360200190f35b61021d610c98565b6102136004803603602081101561034057600080fd5b5035610c9e565b61021d610d46565b610306610d4c565b61035f610d5b565b604080519115158252519081900360200190f35b61021d610d64565b61021d610d6a565b6102136004803603608081101561039957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103cc57600080fd5b8201836020820111156103de57600080fd5b803590602001918460208302840111600160201b831117156103ff57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610d70915050565b61035f6004803603602081101561045557600080fd5b50356001600160a01b0316610f66565b6102136004803603608081101561047b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135610f7b565b61021d61110f565b61021d600480360360608110156104bf57600080fd5b50803590602081013590604001356001600160a01b0316611115565b610213600480360360408110156104f157600080fd5b506001600160a01b038135811691602001351661130a565b61035f6004803603602081101561051f57600080fd5b50356001600160a01b0316611493565b61021d6114a8565b61035f6004803603604081101561054d57600080fd5b506001600160a01b0381351690602001356114ae565b61021d6114ce565b6102136004803603604081101561058157600080fd5b506001600160a01b03813516906020013515156114de565b610213600480360360608110156105af57600080fd5b506001600160a01b03813581169160208101359091169060400135611556565b610213600480360360208110156105e557600080fd5b810190602081018135600160201b8111156105ff57600080fd5b82018360208201111561061157600080fd5b803590602001918460208302840111600160201b8311171561063257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506116d6945050505050565b61021d61172f565b61021d611735565b61021d6004803603602081101561069657600080fd5b503561176b565b61021d611816565b61021d61181c565b610213600480360360608110156106c357600080fd5b506001600160a01b03813581169160208101359091169060400135611822565b610213600480360360808110156106f957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060013561198f565b61035f6004803603602081101561073557600080fd5b5035611b5a565b61021d6004803603606081101561075257600080fd5b50803590602081013590604001356001600160a01b0316611b6f565b6102136004803603602081101561078457600080fd5b5035611de5565b610213600480360360808110156107a157600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156107d457600080fd5b8201836020820111156107e657600080fd5b803590602001918460208302840111600160201b8311171561080757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250611e77915050565b6102136004803603608081101561085d57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611fb7565b610306612139565b610213600480360360608110156108a157600080fd5b506001600160a01b03813581169160208101359091169060400135612148565b610213600480360360808110156108d757600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612309565b61030661240a565b6002600054141561094b576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b0316331461099d576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e8301526052820185905260728083018590528351808403909101815260929092019092528051910120610a118183612419565b604080516001600160a01b03808816825286166020820152808201859052606081018390526080810184905290517fcd9ba83b63715dc15ac193645d6e925bf4b487c94b73d709b8b6dea608efd4cc9181900360a00190a150506001600055505050565b61271081565b60026000541415610ac1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314610b13576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040516a617070726f76654e46547360a81b60208083019182526001600160601b0319606088811b8216602b86015287901b16603f840152845160009388938893889388936053019180860191028083838b5b83811015610b89578181015183820152602001610b71565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050610bbe8183612419565b7ff9d0354d71c261982d98abd09b735f3663b2d7275e2569ad5fd907a4092765f9858585848660405180866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610c4e578181015183820152602001610c36565b50505050905001965050505050505060405180910390a150506001600055505050565b60058181548110610c7e57fe5b6000918252602090912001546001600160a01b0316905081565b600f5481565b6004546001600160a01b03163314610ceb576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b600b548111610d41576040805162461bcd60e51b815260206004820152601f60248201527f476d78466c6f6f723a20696e76616c6964205f6261636b6564537570706c7900604482015290519081900360640190fd5b600b55565b60035481565b6009546001600160a01b031681565b60015460ff1681565b600d5481565b60055490565b60026000541415610db6576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314610e08576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60008484848460405160200180806a617070726f76654e46547360a81b815250600b01856001600160a01b031660601b8152601401846001600160a01b031660601b8152601401838051906020019060200280838360005b83811015610e78578181015183820152602001610e60565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050610eac81612472565b610eb5816124bf565b60005b8351811015610f4f57856001600160a01b031663095ea7b386868481518110610edd57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610f2b57600080fd5b505af1158015610f3f573d6000803e3d6000fd5b505060019092019150610eb89050565b50610f5a81836125a5565b50506001600055505050565b60106020526000908152604090205460ff1681565b60026000541415610fc1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b03163314611013576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f909201909252805191012061107881612472565b611081816124bf565b846001600160a01b031663095ea7b385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156110d857600080fd5b505af11580156110ec573d6000803e3d6000fd5b505050506040513d602081101561110257600080fd5b50610f5a905081836125a5565b61232881565b3360009081526010602052604081205460ff1661116f576040805162461bcd60e51b815260206004820152601360248201527223b6bc233637b7b91d103337b93134b23232b760691b604482015290519081900360640190fd5b600260005414156111b5576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260005583611208576040805162461bcd60e51b815260206004820152601960248201527811db5e119b1bdbdc8e881a5b9d985b1a590817d85b5bdd5b9d603a1b604482015290519081900360640190fd5b60006112138561176b565b90508381101561126a576040805162461bcd60e51b815260206004820181905260248201527f476d78466c6f6f723a20696e73756666696369656e7420616d6f756e744f7574604482015290519081900360640190fd5b600b54611277908661265e565b600b5560095460408051632770a7eb60e21b81523360048201526024810188905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156112cd57600080fd5b505af11580156112e1573d6000803e3d6000fd5b5050600a546112fd92506001600160a01b0316905084836126a9565b6001600055949350505050565b60026000541415611350576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166113a6576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6002805460010190819055604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c830152605080830185905283518084039091018152607090920190925280519101206114118183612419565b336000908152600860209081526040808320848452825291829020805460ff1916600117905581516001600160a01b0387811682528616918101919091528082018390526060810184905290517f4fc9433645aa0a3670e9185496bbd752209fed7a9696fb8a954a0db30ef927b09181900360800190a1505060016000555050565b60066020526000908152604090205460ff1681565b600c5481565b600860209081526000928352604080842090915290825290205460ff1681565b68327cb2734119d3b7a9601e1b81565b6004546001600160a01b0316331461152b576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6002600054141561159c576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166115f2576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c8301526050808301859052835180840390910181526070909201909252805191012061165181612472565b61165a816124bf565b836001600160a01b031663704b6c02846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116a957600080fd5b505af11580156116bd573d6000803e3d6000fd5b505050506116cb81836125a5565b505060016000555050565b6004546001600160a01b03163314611723576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b61172c81612700565b50565b60025481565b600061176661175d600f54611757600d54600e5461280590919063ffffffff16565b9061285e565b600c549061289d565b905090565b600a54604080516370a0823160e01b8152306004820152905160009283926001600160a01b03909116916370a0823191602480820192602092909190829003018186803b1580156117bb57600080fd5b505afa1580156117cf573d6000803e3d6000fd5b505050506040513d60208110156117e557600080fd5b5051600b5490915061180f9061271090611757906123289061180990838988612805565b90612805565b9392505050565b600e5481565b600b5481565b60026000541415611868576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b031633146118ba576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60028054600101908190556040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f909201909252805191012061192b8183612419565b604080516001600160a01b03808816825286166020820152808201859052606081018390526080810184905290517fc19251bf5f704ddc3d5babe6f4e5bde0dded20b19f7844716861821ab3163cd79181900360a00190a150506001600055505050565b600260005414156119d5576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff16611a2b576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e8301526052820185905260728083018590528351808403909101815260929092019092528051910120611a9381612472565b33600090815260086020908152604080832084845290915290205460ff1615611b02576040805162461bcd60e51b815260206004820152601c60248201527b151bdad95b93585b9859d95c8e88185b1c9958591e481cda59db995960221b604482015290519081900360640190fd5b336000908152600860209081526040808320848452825291829020805460ff1916600117905581518381529081018490528151600080516020612e9c833981519152929181900390910190a150506001600055505050565b60076020526000908152604090205460ff1681565b3360009081526010602052604081205460ff16611bc9576040805162461bcd60e51b815260206004820152601360248201527223b6bc233637b7b91d103337b93134b23232b760691b604482015290519081900360640190fd5b60026000541415611c0f576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260005583611c62576040805162461bcd60e51b815260206004820152601960248201527811db5e119b1bdbdc8e881a5b9d985b1a590817d85b5bdd5b9d603a1b604482015290519081900360640190fd5b6000611c6c611735565b90506000611c95611c8e600f54611757600d548a61280590919063ffffffff16565b839061289d565b90506000611ca86002611757858561289d565b90506000611cc668327cb2734119d3b7a9601e1b6117578a85612805565b905086811115611d1b576040805162461bcd60e51b815260206004820152601b60248201527a11db5e119b1bdbdc8e8817db585e10dbdcdd08195e18d959591959602a1b604482015290519081900360640190fd5b600e54611d28908961289d565b600e55600b54611d38908961289d565b600b55600a54611d53906001600160a01b03163330846128f5565b6009546040805163a9059cbb60e01b81526001600160a01b038981166004830152602482018c90529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611da957600080fd5b505af1158015611dbd573d6000803e3d6000fd5b505050506040513d6020811015611dd357600080fd5b50506001600055979650505050505050565b6004546001600160a01b03163314611e32576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b600d548111611e725760405162461bcd60e51b8152600401808060200182810382526021815260200180612e386021913960400191505060405180910390fd5b600d55565b60026000541415611ebd576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff16611f13576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60008484848460405160200180806a617070726f76654e46547360a81b815250600b01856001600160a01b031660601b8152601401846001600160a01b031660601b8152601401838051906020019060200280838360005b83811015611f83578181015183820152602001611f6b565b50505050905001828152602001945050505050604051602081830303815290604052805190602001209050611a9381612472565b60026000541415611ffd576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b60026000556004546001600160a01b0316331461204f576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805169185c1c1c9bdd9953919560b21b6020808301919091526001600160601b0319606088811b8216602a85015287901b16603e83015260528201859052607280830185905283518084039091018152609290920190925280519101206120b781612472565b6120c0816124bf565b846001600160a01b031663095ea7b385856040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561211757600080fd5b505af115801561212b573d6000803e3d6000fd5b50505050610f5a81836125a5565b600a546001600160a01b031681565b6002600054141561218e576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166121e4576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b604080516739b2ba20b236b4b760c11b6020808301919091526001600160601b0319606087811b8216602885015286901b16603c8301526050808301859052835180840390910181526070909201909252805191012061224381612472565b33600090815260086020908152604080832084845290915290205460ff16156122b2576040805162461bcd60e51b815260206004820152601c60248201527b151bdad95b93585b9859d95c8e88185b1c9958591e481cda59db995960221b604482015290519081900360640190fd5b336000908152600860209081526040808320848452825291829020805460ff1916600117905581518381529081018490528151600080516020612e9c833981519152929181900390910190a1505060016000555050565b6002600054141561234f576040805162461bcd60e51b815260206004820152601f6024820152600080516020612d66833981519152604482015290519081900360640190fd5b600260009081553381526006602052604090205460ff166123a5576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606088811b8216602785015287901b16603b830152604f8201859052606f80830185905283518084039091018152608f9092019092528051910120611a9381612472565b6004546001600160a01b031681565b600082815260076020908152604091829020805460ff19166001179055815184815290810183905281517f64df01c46eb530dc540770a0b88cc32f0b8c2b371a546ae0b13cc8ca6671fff9929181900390910190a15050565b60008181526007602052604090205460ff1661172c5760405162461bcd60e51b8152600401808060200182810382526022815260200180612e596022913960400191505060405180910390fd5b6000805b600554811015612523576000600582815481106124dc57fe5b60009182526020808320909101546001600160a01b031680835260088252604080842088855290925291205490915060ff161561251a576001909201915b506001016124c3565b50806125605760405162461bcd60e51b8152600401808060200182810382526023815260200180612dcf6023913960400191505060405180910390fd5b6003548110156125a15760405162461bcd60e51b8152600401808060200182810382526028815260200180612da76028913960400191505060405180910390fd5b5050565b60008281526007602052604090205460ff16612608576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e4d616e616765723a20696e76616c6964205f616374696f6e000000604482015290519081900360640190fd5b600082815260076020908152604091829020805460ff19169055815184815290810183905281517ff4640d39061e643d9b802cb3725953405344555ad6dbb1cbdb0495f3eccb8e68929181900390910190a15050565b60006126a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612955565b90505b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526126fb9084906129ec565b505050565b6004546001600160a01b0316331461274d576040805162461bcd60e51b81526020600482015260176024820152600080516020612df2833981519152604482015290519081900360640190fd5b60015460ff161561278f5760405162461bcd60e51b8152600401808060200182810382526021815260200180612d866021913960400191505060405180910390fd5b6001805460ff19168117905580516127ae906005906020840190612ce1565b5060005b81518110156125a15760008282815181106127c957fe5b6020908102919091018101516001600160a01b03166000908152600690915260409020805460ff191660019081179091559190910190506127b2565b600082612814575060006126a3565b8282028284828161282157fe5b04146126a05760405162461bcd60e51b8152600401808060200182810382526021815260200180612e7b6021913960400191505060405180910390fd5b60006126a083836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250612a9d565b6000828201838110156126a0576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261294f9085906129ec565b50505050565b600081848411156129e45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a9578181015183820152602001612991565b50505050905090810190601f1680156129d65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6060612a41826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b029092919063ffffffff16565b8051909150156126fb57808060200190516020811015612a6057600080fd5b50516126fb5760405162461bcd60e51b815260040180806020018281038252602a815260200180612ebc602a913960400191505060405180910390fd5b60008183612aec5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156129a9578181015183820152602001612991565b506000838581612af857fe5b0495945050505050565b6060612b118484600085612b19565b949350505050565b606082471015612b5a5760405162461bcd60e51b8152600401808060200182810382526026815260200180612e126026913960400191505060405180910390fd5b612b6385612c75565b612bb4576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612bf35780518252601f199092019160209182019101612bd4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612c55576040519150601f19603f3d011682016040523d82523d6000602084013e612c5a565b606091505b5091509150612c6a828286612c7b565b979650505050505050565b3b151590565b60608315612c8a57508161180f565b825115612c9a5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156129a9578181015183820152602001612991565b828054828255906000526020600020908101928215612d36579160200282015b82811115612d3657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612d01565b50612d42929150612d46565b5090565b5b80821115612d425780546001600160a01b0319168155600101612d4756fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00546f6b656e4d616e616765723a20616c726561647920696e697469616c697a6564546f6b656e4d616e616765723a20696e73756666696369656e7420617574686f72697a6174696f6e546f6b656e4d616e616765723a20616374696f6e206e6f7420617574686f72697a6564546f6b656e4d616e616765723a20666f7262696464656e000000000000000000416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c476d78466c6f6f723a20696e76616c6964205f6d696e744d756c7469706c696572546f6b656e4d616e616765723a20616374696f6e206e6f74207369676e616c6c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77aae28fe5531fe5dfb8d12409392ec67b50c825dd06233312cb6aeaddd16cbd225361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220009e8c6f46c854a954df41cce27473d9cbe646b1ad88059ab41414d7d29a9add64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
