{
  "_format": "hh-sol-artifact-1",
  "contractName": "BaseGaugeV2UniV3",
  "sourceName": "contracts/gauges/BaseGaugeV2UniV3.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token1",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "fee",
          "type": "uint24"
        },
        {
          "internalType": "address",
          "name": "_registry",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_timelock",
          "type": "address"
        },
        {
          "internalType": "contract INonfungiblePositionManager",
          "name": "_nonfungiblePositionManager",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IUniswapV3Pool",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "endTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "name": "IncentiveCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "name": "RewardClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        }
      ],
      "name": "TokenStaked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "TokenUnstaked",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DURATION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        }
      ],
      "name": "boostedFactor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "original",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "boosted",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "factor",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "claimReward",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "claimRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "deposits",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "int24",
          "name": "tickLower",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "tickUpper",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "liquidity",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "derivedLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "enableEmergencyMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "endTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract IUniswapV3Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inEmergency",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "incentives",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "",
          "type": "uint160"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "isIdsWithinRange",
      "outputs": [
        {
          "internalType": "bool[]",
          "name": "",
          "type": "bool[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "left",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxBoostRequirement",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nonfungiblePositionManager",
      "outputs": [
        {
          "internalType": "contract INonfungiblePositionManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "notifyRewardAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pool",
      "outputs": [
        {
          "internalType": "contract IUniswapV3Pool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registry",
      "outputs": [
        {
          "internalType": "contract IRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "rewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "stakes",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "secondsPerLiquidityInsideInitialX128",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "timelock",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalLiquiditySupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalRewardUnclaimed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSecondsClaimedX128",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "",
          "type": "uint160"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "withdrawToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "withdrawViaEmergency",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b506040516200367138038062003671833981016040819052620000349162000242565b6001600055606083901b6001600160601b031916608052600880546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b158015620000a057600080fd5b505afa158015620000b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000db91906200021c565b600780546001600160a01b0319166001600160a01b03928316908117909155604051630b4c774160e11b81528883166004820152918716602483015262ffffff86166044830152600091631698ee829060640160206040518083038186803b1580156200014757600080fd5b505afa1580156200015c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018291906200021c565b90506001600160a01b038116620001d45760405162461bcd60e51b81526020600482015260126024820152711c1bdbdb08191bd95cdb89dd08195e1a5cdd60721b604482015260640160405180910390fd5b60601b6001600160601b03191660a0525060068054610100600160a81b0319166101006001600160a01b03939093169290920291909117905550504260035550620002f49050565b6000602082840312156200022e578081fd5b81516200023b81620002db565b9392505050565b60008060008060008060c087890312156200025b578182fd5b86516200026881620002db565b60208801519096506200027b81620002db565b604088015190955062ffffff8116811462000294578283fd5b6060880151909450620002a781620002db565b6080880151909350620002ba81620002db565b60a0880151909250620002cd81620002db565b809150509295509295509295565b6001600160a01b0381168114620002f157600080fd5b50565b60805160601c60a05160601c6133126200035f600039600081816102bb01528181610a61015281816118de01526120b801526000818161044a0152818161167601528181611823015281816119fd01528181611a7f01528181611c0f0152611dc601526133126000f3fe6080604052600436106101ae5760003560e01c806379aa9db5116100ed578063b44a272211610090578063b44a27221461058f578063b66503cf146105af578063bf7989b9146105cf578063c45a0155146105e5578063c5b1c7d014610605578063d33219b41461061a578063d5a44f861461063f578063e70eb39214610686578063ea9f5517146106a657600080fd5b806379aa9db5146104225780637b103999146104385780638a16a30b1461046c57806399bcc0521461048c5780639be54945146104ae578063a65b781e146104d8578063ac9650d8146104f8578063b02c43d01461051857600080fd5b80632f745c59116101555780632f745c59146103165780633197cbb614610336578063403017ca1461034c5780634f6ccce71461038757806350baa622146103a757806369db8b27146103c957806370a08231146103df57806378e979251461040c57600080fd5b80630520537f146101b35780630700037d146101e65780630b9cc5fd146102135780630d5df7ba14610240578063150b7a021461027057806316f0115b146102a957806318160ddd146102ea5780631be05289146102ff575b600080fd5b3480156101bf57600080fd5b506101d36101ce366004612b5e565b6106c6565b6040519081526020015b60405180910390f35b3480156101f257600080fd5b506101d36102013660046129b9565b600c6020526000908152604090205481565b34801561021f57600080fd5b5061023361022e366004612b24565b61072c565b6040516101dd9190612efb565b34801561024c57600080fd5b50600154600254604080519283526001600160a01b039091166020830152016101dd565b34801561027c57600080fd5b5061029061028b3660046129f1565b6108d0565b6040516001600160e01b031990911681526020016101dd565b3480156102b557600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101dd9190612ec3565b3480156102f657600080fd5b506010546101d3565b34801561030b57600080fd5b506101d362093a8081565b34801561032257600080fd5b506101d3610331366004612a8a565b610f8c565b34801561034257600080fd5b506101d360045481565b34801561035857600080fd5b5061036c610367366004612d6d565b611030565b604080519384526020840192909252908201526060016101dd565b34801561039357600080fd5b506101d36103a2366004612d3d565b6110bb565b3480156103b357600080fd5b506103c76103c2366004612d3d565b61115c565b005b3480156103d557600080fd5b506101d360055481565b3480156103eb57600080fd5b506101d36103fa3660046129b9565b600d6020526000908152604090205481565b34801561041857600080fd5b506101d360035481565b34801561042e57600080fd5b506101d3600b5481565b34801561044457600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506103c7610487366004612d3d565b6112f1565b34801561049857600080fd5b506101d36104a73660046129b9565b5060015490565b3480156104ba57600080fd5b506006546104c89060ff1681565b60405190151581526020016101dd565b3480156104e457600080fd5b506002546102dd906001600160a01b031681565b61050b610506366004612ab5565b61149f565b6040516101dd9190612f41565b34801561052457600080fd5b50610566610533366004612d3d565b6009602052600090815260409020546001600160a01b03811690600160a01b8104600290810b91600160b81b9004900b83565b604080516001600160a01b039094168452600292830b6020850152910b908201526060016101dd565b34801561059b57600080fd5b506008546102dd906001600160a01b031681565b3480156105bb57600080fd5b506103c76105ca366004612a8a565b611619565b3480156105db57600080fd5b506101d360015481565b3480156105f157600080fd5b506007546102dd906001600160a01b031681565b34801561061157600080fd5b506103c7611935565b34801561062657600080fd5b506006546102dd9061010090046001600160a01b031681565b34801561064b57600080fd5b5061065f61065a366004612d3d565b611b90565b604080516001600160a01b0390931683526001600160801b039091166020830152016101dd565b34801561069257600080fd5b506101d36106a1366004612d6d565b611bdc565b3480156106b257600080fd5b506101d36106c1366004612d6d565b611bef565b60008060005b8451811015610724576107068582815181106106f857634e487b7160e01b600052603260045260246000fd5b602002602001015185611d6c565b6107109083613136565b91508061071c81613267565b9150506106cc565b509392505050565b6060600082516001600160401b0381111561075757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610780578160200160208202803683370190505b50905060005b83518110156108c95760008482815181106107b157634e487b7160e01b600052603260045260246000fd5b6020908102919091010151600754600854919250600091829182916107e3916001600160a01b03908116911686611ea6565b509250925092506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561082557600080fd5b505afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190612caf565b50505050509150508060020b8360020b12801561087f57508160020b8160020b125b87878151811061089f57634e487b7160e01b600052603260045260246000fd5b602002602001019015159081151581525050505050505080806108c190613267565b915050610786565b5092915050565b60065460009060ff16156108ff5760405162461bcd60e51b81526004016108f690613065565b60405180910390fd5b6008546001600160a01b031633146109745760405162461bcd60e51b815260206004820152603260248201527f556e697377617056335374616b65723a3a6f6e45524337323152656365697665604482015271190e881b9bdd0818481d5b9a5d8cc81b999d60721b60648201526084016108f6565b60075460085460009182918291829161099a916001600160a01b0390811691168a611ea6565b935093509350935060405180606001604052808a6001600160a01b031681526020018460020b81526020018360020b815250600960008a815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160176101000a81548162ffffff021916908360020b62ffffff1602179055509050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614610b065760405162461bcd60e51b815260206004820152603d60248201527f556e697377617056335374616b65723a3a7374616b65546f6b656e3a20746f6b60448201527f656e20706f6f6c206973206e6f742074686520726967687420706f6f6c00000060648201526084016108f6565b6000816001600160801b031611610b87576040805162461bcd60e51b81526020600482015260248101919091527f556e697377617056335374616b65723a3a7374616b65546f6b656e3a2063616e60448201527f6e6f74207374616b6520746f6b656e20776974682030206c697175696469747960648201526084016108f6565b806001600160801b0316600b6000828254610ba29190613136565b9091555060009050610bbd6001600160801b0383168b611bef565b6040516351c403f960e11b8152600286810b600483015285900b60248201529091506000906001600160a01b0387169063a38807f29060440160606040518083038186803b158015610c0e57600080fd5b505afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190612bc7565b509150506001600160601b036001600160801b03831610610d75576040518060800160405280826001600160a01b031681526020016001600160601b0380168152602001836001600160801b03168152602001846001600160801b0316815250600a60008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050610e86565b6040518060800160405280826001600160a01b03168152602001836001600160601b0316815260200160006001600160801b03168152602001846001600160801b0316815250600a60008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b031602179055509050505b610ece8a601080546000838152601160205260408120829055600182018355919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720155565b6001600160a01b038b166000908152600d6020908152604080832054600e835281842081855283528184208e90558d8452600f909252909120556001600160a01b038b166000908152600d60205260408120805460019290610f31908490613136565b90915550506040516001600160801b03841681528a907f4a1aff2ad1f7400721a859525efe44bd9dea253e1e02ba4161f2c77ed16fc0a39060200160405180910390a250630a85bd0160e11b9b9a5050505050505050505050565b6001600160a01b0382166000908152600d602052604081205482106110075760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016108f6565b506001600160a01b03919091166000908152600e60209081526040808320938352929052205490565b600754600854600091829182918291611056916001600160a01b03908116911688611ea6565b9350505050606481601461106a9190613188565b611074919061314e565b6001600160801b03169350611092816001600160801b031686611bef565b9250826110a785670de0b6b3a76400006131dd565b6110b19190613174565b9150509250925092565b60006110c660105490565b82106111295760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016108f6565b6010828154811061114a57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b60065460ff161561117f5760405162461bcd60e51b81526004016108f690613065565b61118881611ffa565b6000818152600a6020526040812060010154600b8054600160801b9092046001600160801b03169290916111bd908490613224565b90915550506000818152600960205260409020546001600160a01b031633146111f85760405162461bcd60e51b81526004016108f690613008565b600081815260096020908152604080832080546001600160d01b0319169055600a90915281208181556001015561122f33826121f9565b61123881612295565b336000908152600d60205260408120805460019290611258908490613224565b909155505060405181907f85837b804496fa8a31cf9284d2c34c3276ca3d5369cfe705026f7bad0365c0f290600090a2600854604051632142170760e11b81526001600160a01b03909116906342842e0e906112bc90309033908690600401612ed7565b600060405180830381600087803b1580156112d657600080fd5b505af11580156112ea573d6000803e3d6000fd5b5050505050565b60065460ff1661133b5760405162461bcd60e51b81526020600482015260156024820152746e6f7420696e20656d657267656e6379206d6f646560581b60448201526064016108f6565b6000818152600960205260409020546001600160a01b031633146113715760405162461bcd60e51b81526004016108f690613008565b600061137c82611b90565b9150506001600160801b0381166113a55760405162461bcd60e51b81526004016108f690612fb5565b600082815260096020908152604080832080546001600160d01b0319169055600a9091528120818155600101556113dc33836121f9565b6113e582612295565b336000908152600d60205260408120805460019290611405908490613224565b909155505060405182907f85837b804496fa8a31cf9284d2c34c3276ca3d5369cfe705026f7bad0365c0f290600090a2600854604051632142170760e11b81526001600160a01b03909116906342842e0e9061146990309033908790600401612ed7565b600060405180830381600087803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050505050565b6060816001600160401b038111156114c757634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114fa57816020015b60608152602001906001900390816114e55790505b50905060005b828110156108c9576000803086868581811061152c57634e487b7160e01b600052603260045260246000fd5b905060200281019061153e9190613090565b60405161154c929190612e97565b600060405180830381855af49150503d8060008114611587576040519150601f19603f3d011682016040523d82523d6000602084013e61158c565b606091505b5091509150816115d8576044815110156115a557600080fd5b600481019050808060200190518101906115bf9190612c20565b60405162461bcd60e51b81526004016108f69190612fa2565b808484815181106115f957634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061161190613267565b915050611500565b6002600054141561166c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f6565b60026000819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170591906129d5565b6001600160a01b0316826001600160a01b0316146117815760405162461bcd60e51b815260206004820152603360248201527f556e697377617056335374616b65723a3a637265617465496e63656e746976656044820152720e881bdb9b1e481b585a1848185b1b1bddd959606a1b60648201526084016108f6565b600081116117f35760405162461bcd60e51b815260206004820152603960248201527f556e697377617056335374616b65723a3a637265617465496e63656e746976656044820152783a20726577617264206d75737420626520706f73697469766560381b60648201526084016108f6565b80600160008282546118059190613136565b90915550611818905062093a8042613136565b6004819055506118ba7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b15801561187a57600080fd5b505afa15801561188e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b291906129d5565b33308461236e565b60035460045460408051928352602083019190915281018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fd7a440eccc1b2ae97683e4d1cd3e4e1f17ec4eb738ff723eff7a664a33c417989060600160405180910390a250506001600055565b60065461010090046001600160a01b031633146119835760405162461bcd60e51b815260206004820152600c60248201526b6e6f742074696d656c6f636b60a01b60448201526064016108f6565b60065460ff16156119d25760405162461bcd60e51b8152602060048201526019602482015278616c726561647920696e20656d657267656e6379206d6f646560381b60448201526064016108f6565b6006805460ff1916600117905560408051631ef0061b60e11b81529051611b8e916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633de00c3691600480820192602092909190829003018186803b158015611a4457600080fd5b505afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906129d5565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad657600080fd5b505afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0e91906129d5565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b399190612ec3565b60206040518083038186803b158015611b5157600080fd5b505afa158015611b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b899190612d55565b6123fd565b565b6000818152600a6020526040902080546001600160a01b038116916001600160601b03600160a01b909204821691821415611bd65760018101546001600160801b031691505b50915091565b6000611be88383611d6c565b9392505050565b6000806064611bff8560146131dd565b611c099190613174565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635ebaf1db6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c6657600080fd5b505afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e91906129d5565b6001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401611cc99190612ec3565b60206040518083038186803b158015611ce157600080fd5b505afa158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d199190612d55565b9050600060646005548388611d2e91906131dd565b611d399060506131dd565b611d439190613174565b611d4d9190613174565b9050611d62611d5c8285613136565b8761248a565b9695505050505050565b60065460009060ff1615611d925760405162461bcd60e51b81526004016108f690613065565b611d9b83611ffa565b336000908152600c60205260408120805491829190611dba8380613224565b92505081905550611e5c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5591906129d5565b84836123fd565b826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611e9791815260200190565b60405180910390a29392505050565b6000806000806000806000886001600160a01b03166399fbab88896040518263ffffffff1660e01b8152600401611edf91815260200190565b6101806040518083038186803b158015611ef857600080fd5b505afa158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190612d91565b5050604051630b4c774160e11b8152949f50929d50909b509499509297509095506001600160a01b038f169450631698ee829350611f9c9250879150869086906004016001600160a01b03938416815291909216602082015262ffffff91909116604082015260600190565b60206040518083038186803b158015611fb457600080fd5b505afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec91906129d5565b965050505093509350935093565b6000818152600960209081526040808320815160608101835290546001600160a01b0381168252600160a01b8104600290810b810b810b94830194909452600160b81b9004830b830b90920b90820152908061205584611b90565b91509150806001600160801b0316600014156120835760405162461bcd60e51b81526004016108f690612fb5565b602083015160408085015190516351c403f960e11b8152600292830b6004820152910b60248201526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a38807f29060440160606040518083038186803b1580156120fa57600080fd5b505afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121329190612bc7565b50915050600080612164600154600260009054906101000a90046001600160a01b0316600354600454888a89426124a0565b6002805492945090925082916000906121879084906001600160a01b031661310b565b92506101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600160008282546121bd9190613224565b909155505085516001600160a01b03166000908152600c6020526040812080548492906121eb908490613136565b909155505050505050505050565b6001600160a01b0382166000908152600d6020908152604080832054848452600f90925290912054808214612262576001600160a01b0384166000908152600e602090815260408083208584528252808320548484528184208190558352600f90915290208190555b506000918252600f602090815260408084208490556001600160a01b039094168352600e81528383209183525290812055565b6010546000906122a790600190613224565b600083815260116020526040812054601080549394509092849081106122dd57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806010838154811061230c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260119091526040808220849055858252812055601080548061235257634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6001600160a01b0384163b6123eb5760405162461bcd60e51b815260206004820152603e60248201527f5472616e7366657248656c706572457874656e6465643a3a736166655472616e60448201527f7366657246726f6d3a2063616c6c20746f206e6f6e2d636f6e7472616374000060648201526084016108f6565b6123f784848484612535565b50505050565b6001600160a01b0383163b61247a5760405162461bcd60e51b815260206004820152603a60248201527f5472616e7366657248656c706572457874656e6465643a3a736166655472616e60448201527f736665723a2063616c6c20746f206e6f6e2d636f6e747261637400000000000060648201526084016108f6565b61248583838361263b565b505050565b60008183106124995781611be8565b5090919050565b600080878310156124c157634e487b7160e01b600052600160045260246000fd5b6001600160801b0386166124d586866131fc565b6124df91906131b7565b90506000896001600160a01b031660808a6124fa8b88612734565b6125049190613224565b61250f92911b613224565b90506125258b836001600160a01b031683612744565b9250509850989650505050505050565b600080856001600160a01b03166323b872dd60e01b86868660405160240161255f93929190612ed7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161259d9190612ea7565b6000604051808303816000865af19150503d80600081146125da576040519150601f19603f3d011682016040523d82523d6000602084013e6125df565b606091505b50915091508180156126095750805115806126095750808060200190518101906126099190612bad565b6114975760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016108f6565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916126979190612ea7565b6000604051808303816000865af19150503d80600081146126d4576040519150601f19603f3d011682016040523d82523d6000602084013e6126d9565b606091505b50915091508180156127035750805115806127035750808060200190518101906127039190612bad565b6112ea5760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016108f6565b6000818310156124995781611be8565b60008080600019858709858702925082811083820303915050806000141561277e576000841161277357600080fd5b508290049050611be8565b80841161278a57600080fd5b6000848688098084039381119092039190506000856127ab81600019613224565b6127b6906001613136565b169586900495938490049360008190030460010190506127d681846131dd565b9093179260006127e78760036131dd565b60021890506127f681886131dd565b612801906002613224565b61280b90826131dd565b905061281781886131dd565b612822906002613224565b61282c90826131dd565b905061283881886131dd565b612843906002613224565b61284d90826131dd565b905061285981886131dd565b612864906002613224565b61286e90826131dd565b905061287a81886131dd565b612885906002613224565b61288f90826131dd565b905061289b81886131dd565b6128a6906002613224565b6128b090826131dd565b90506128bc81866131dd565b9998505050505050505050565b80516128d4816132c4565b919050565b600082601f8301126128e9578081fd5b813560206001600160401b03821115612904576129046132ae565b8160051b6129138282016130db565b83815282810190868401838801850189101561292d578687fd5b8693505b8584101561294f578035835260019390930192918401918401612931565b50979650505050505050565b805180151581146128d457600080fd5b8051600281900b81146128d457600080fd5b80516001600160801b03811681146128d457600080fd5b805161ffff811681146128d457600080fd5b805162ffffff811681146128d457600080fd5b6000602082840312156129ca578081fd5b8135611be8816132c4565b6000602082840312156129e6578081fd5b8151611be8816132c4565b600080600080600060808688031215612a08578081fd5b8535612a13816132c4565b94506020860135612a23816132c4565b93506040860135925060608601356001600160401b0380821115612a45578283fd5b818801915088601f830112612a58578283fd5b813581811115612a66578384fd5b896020828501011115612a77578384fd5b9699959850939650602001949392505050565b60008060408385031215612a9c578182fd5b8235612aa7816132c4565b946020939093013593505050565b60008060208385031215612ac7578182fd5b82356001600160401b0380821115612add578384fd5b818501915085601f830112612af0578384fd5b813581811115612afe578485fd5b8660208260051b8501011115612b12578485fd5b60209290920196919550909350505050565b600060208284031215612b35578081fd5b81356001600160401b03811115612b4a578182fd5b612b56848285016128d9565b949350505050565b60008060408385031215612b70578182fd5b82356001600160401b03811115612b85578283fd5b612b91858286016128d9565b9250506020830135612ba2816132c4565b809150509250929050565b600060208284031215612bbe578081fd5b611be88261295b565b600080600060608486031215612bdb578081fd5b83518060060b8114612beb578182fd5b6020850151909350612bfc816132c4565b604085015190925063ffffffff81168114612c15578182fd5b809150509250925092565b600060208284031215612c31578081fd5b81516001600160401b0380821115612c47578283fd5b818401915084601f830112612c5a578283fd5b815181811115612c6c57612c6c6132ae565b612c7f601f8201601f19166020016130db565b9150808252856020828501011115612c95578384fd5b612ca681602084016020860161323b565b50949350505050565b600080600080600080600060e0888a031215612cc9578485fd5b8751612cd4816132c4565b9650612ce26020890161296b565b9550612cf060408901612994565b9450612cfe60608901612994565b9350612d0c60808901612994565b925060a088015160ff81168114612d21578283fd5b9150612d2f60c0890161295b565b905092959891949750929550565b600060208284031215612d4e578081fd5b5035919050565b600060208284031215612d66578081fd5b5051919050565b60008060408385031215612d7f578182fd5b823591506020830135612ba2816132c4565b6000806000806000806000806000806000806101808d8f031215612db3578586fd5b8c516001600160601b0381168114612dc9578687fd5b9b50612dd760208e016128c9565b9a50612de560408e016128c9565b9950612df360608e016128c9565b9850612e0160808e016129a6565b9750612e0f60a08e0161296b565b9650612e1d60c08e0161296b565b9550612e2b60e08e0161297d565b94506101008d015193506101208d01519250612e4a6101408e0161297d565b9150612e596101608e0161297d565b90509295989b509295989b509295989b565b60008151808452612e8381602086016020860161323b565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b60008251612eb981846020870161323b565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612f35578351151583529284019291840191600101612f17565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015612f9557603f19888603018452612f83858351612e6b565b94509285019290850190600101612f67565b5092979650505050505050565b602081526000611be86020830184612e6b565b60208082526033908201527f556e697377617056335374616b65723a3a756e7374616b65546f6b656e3a20736040820152721d185ad948191bd95cc81b9bdd08195e1a5cdd606a1b606082015260800190565b6020808252603d908201527f556e697377617056335374616b65723a3a7769746864726177546f6b656e3a2060408201527f6f6e6c79206f776e65722063616e20776974686472617720746f6b656e000000606082015260800190565b602080825260119082015270696e20656d657267656e6379206d6f646560781b604082015260600190565b6000808335601e198436030181126130a6578283fd5b8301803591506001600160401b038211156130bf578283fd5b6020019150368190038213156130d457600080fd5b9250929050565b604051601f8201601f191681016001600160401b0381118282101715613103576131036132ae565b604052919050565b60006001600160a01b0382811684821680830382111561312d5761312d613282565b01949350505050565b6000821982111561314957613149613282565b500190565b60006001600160801b038381168061316857613168613298565b92169190910492915050565b60008261318357613183613298565b500490565b60006001600160801b03828116848216811515828404821116156131ae576131ae613282565b02949350505050565b60006001600160a01b03828116848216811515828404821116156131ae576131ae613282565b60008160001904831182151516156131f7576131f7613282565b500290565b60006001600160a01b038381169083168181101561321c5761321c613282565b039392505050565b60008282101561323657613236613282565b500390565b60005b8381101561325657818101518382015260200161323e565b838111156123f75750506000910152565b600060001982141561327b5761327b613282565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146132d957600080fd5b5056fea26469706673582212201db284e1571e45ff6685a65b48e87ff291cf9fb2bdc28da21b4cc35c6d7ddb7264736f6c63430008040033",
  "deployedBytecode": "0x6080604052600436106101ae5760003560e01c806379aa9db5116100ed578063b44a272211610090578063b44a27221461058f578063b66503cf146105af578063bf7989b9146105cf578063c45a0155146105e5578063c5b1c7d014610605578063d33219b41461061a578063d5a44f861461063f578063e70eb39214610686578063ea9f5517146106a657600080fd5b806379aa9db5146104225780637b103999146104385780638a16a30b1461046c57806399bcc0521461048c5780639be54945146104ae578063a65b781e146104d8578063ac9650d8146104f8578063b02c43d01461051857600080fd5b80632f745c59116101555780632f745c59146103165780633197cbb614610336578063403017ca1461034c5780634f6ccce71461038757806350baa622146103a757806369db8b27146103c957806370a08231146103df57806378e979251461040c57600080fd5b80630520537f146101b35780630700037d146101e65780630b9cc5fd146102135780630d5df7ba14610240578063150b7a021461027057806316f0115b146102a957806318160ddd146102ea5780631be05289146102ff575b600080fd5b3480156101bf57600080fd5b506101d36101ce366004612b5e565b6106c6565b6040519081526020015b60405180910390f35b3480156101f257600080fd5b506101d36102013660046129b9565b600c6020526000908152604090205481565b34801561021f57600080fd5b5061023361022e366004612b24565b61072c565b6040516101dd9190612efb565b34801561024c57600080fd5b50600154600254604080519283526001600160a01b039091166020830152016101dd565b34801561027c57600080fd5b5061029061028b3660046129f1565b6108d0565b6040516001600160e01b031990911681526020016101dd565b3480156102b557600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516101dd9190612ec3565b3480156102f657600080fd5b506010546101d3565b34801561030b57600080fd5b506101d362093a8081565b34801561032257600080fd5b506101d3610331366004612a8a565b610f8c565b34801561034257600080fd5b506101d360045481565b34801561035857600080fd5b5061036c610367366004612d6d565b611030565b604080519384526020840192909252908201526060016101dd565b34801561039357600080fd5b506101d36103a2366004612d3d565b6110bb565b3480156103b357600080fd5b506103c76103c2366004612d3d565b61115c565b005b3480156103d557600080fd5b506101d360055481565b3480156103eb57600080fd5b506101d36103fa3660046129b9565b600d6020526000908152604090205481565b34801561041857600080fd5b506101d360035481565b34801561042e57600080fd5b506101d3600b5481565b34801561044457600080fd5b506102dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506103c7610487366004612d3d565b6112f1565b34801561049857600080fd5b506101d36104a73660046129b9565b5060015490565b3480156104ba57600080fd5b506006546104c89060ff1681565b60405190151581526020016101dd565b3480156104e457600080fd5b506002546102dd906001600160a01b031681565b61050b610506366004612ab5565b61149f565b6040516101dd9190612f41565b34801561052457600080fd5b50610566610533366004612d3d565b6009602052600090815260409020546001600160a01b03811690600160a01b8104600290810b91600160b81b9004900b83565b604080516001600160a01b039094168452600292830b6020850152910b908201526060016101dd565b34801561059b57600080fd5b506008546102dd906001600160a01b031681565b3480156105bb57600080fd5b506103c76105ca366004612a8a565b611619565b3480156105db57600080fd5b506101d360015481565b3480156105f157600080fd5b506007546102dd906001600160a01b031681565b34801561061157600080fd5b506103c7611935565b34801561062657600080fd5b506006546102dd9061010090046001600160a01b031681565b34801561064b57600080fd5b5061065f61065a366004612d3d565b611b90565b604080516001600160a01b0390931683526001600160801b039091166020830152016101dd565b34801561069257600080fd5b506101d36106a1366004612d6d565b611bdc565b3480156106b257600080fd5b506101d36106c1366004612d6d565b611bef565b60008060005b8451811015610724576107068582815181106106f857634e487b7160e01b600052603260045260246000fd5b602002602001015185611d6c565b6107109083613136565b91508061071c81613267565b9150506106cc565b509392505050565b6060600082516001600160401b0381111561075757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610780578160200160208202803683370190505b50905060005b83518110156108c95760008482815181106107b157634e487b7160e01b600052603260045260246000fd5b6020908102919091010151600754600854919250600091829182916107e3916001600160a01b03908116911686611ea6565b509250925092506000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561082557600080fd5b505afa158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190612caf565b50505050509150508060020b8360020b12801561087f57508160020b8160020b125b87878151811061089f57634e487b7160e01b600052603260045260246000fd5b602002602001019015159081151581525050505050505080806108c190613267565b915050610786565b5092915050565b60065460009060ff16156108ff5760405162461bcd60e51b81526004016108f690613065565b60405180910390fd5b6008546001600160a01b031633146109745760405162461bcd60e51b815260206004820152603260248201527f556e697377617056335374616b65723a3a6f6e45524337323152656365697665604482015271190e881b9bdd0818481d5b9a5d8cc81b999d60721b60648201526084016108f6565b60075460085460009182918291829161099a916001600160a01b0390811691168a611ea6565b935093509350935060405180606001604052808a6001600160a01b031681526020018460020b81526020018360020b815250600960008a815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160176101000a81548162ffffff021916908360020b62ffffff1602179055509050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614610b065760405162461bcd60e51b815260206004820152603d60248201527f556e697377617056335374616b65723a3a7374616b65546f6b656e3a20746f6b60448201527f656e20706f6f6c206973206e6f742074686520726967687420706f6f6c00000060648201526084016108f6565b6000816001600160801b031611610b87576040805162461bcd60e51b81526020600482015260248101919091527f556e697377617056335374616b65723a3a7374616b65546f6b656e3a2063616e60448201527f6e6f74207374616b6520746f6b656e20776974682030206c697175696469747960648201526084016108f6565b806001600160801b0316600b6000828254610ba29190613136565b9091555060009050610bbd6001600160801b0383168b611bef565b6040516351c403f960e11b8152600286810b600483015285900b60248201529091506000906001600160a01b0387169063a38807f29060440160606040518083038186803b158015610c0e57600080fd5b505afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c469190612bc7565b509150506001600160601b036001600160801b03831610610d75576040518060800160405280826001600160a01b031681526020016001600160601b0380168152602001836001600160801b03168152602001846001600160801b0316815250600a60008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050610e86565b6040518060800160405280826001600160a01b03168152602001836001600160601b0316815260200160006001600160801b03168152602001846001600160801b0316815250600a60008c815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a8154816001600160601b0302191690836001600160601b0316021790555060408201518160010160006101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b031602179055509050505b610ece8a601080546000838152601160205260408120829055600182018355919091527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6720155565b6001600160a01b038b166000908152600d6020908152604080832054600e835281842081855283528184208e90558d8452600f909252909120556001600160a01b038b166000908152600d60205260408120805460019290610f31908490613136565b90915550506040516001600160801b03841681528a907f4a1aff2ad1f7400721a859525efe44bd9dea253e1e02ba4161f2c77ed16fc0a39060200160405180910390a250630a85bd0160e11b9b9a5050505050505050505050565b6001600160a01b0382166000908152600d602052604081205482106110075760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016108f6565b506001600160a01b03919091166000908152600e60209081526040808320938352929052205490565b600754600854600091829182918291611056916001600160a01b03908116911688611ea6565b9350505050606481601461106a9190613188565b611074919061314e565b6001600160801b03169350611092816001600160801b031686611bef565b9250826110a785670de0b6b3a76400006131dd565b6110b19190613174565b9150509250925092565b60006110c660105490565b82106111295760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016108f6565b6010828154811061114a57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b60065460ff161561117f5760405162461bcd60e51b81526004016108f690613065565b61118881611ffa565b6000818152600a6020526040812060010154600b8054600160801b9092046001600160801b03169290916111bd908490613224565b90915550506000818152600960205260409020546001600160a01b031633146111f85760405162461bcd60e51b81526004016108f690613008565b600081815260096020908152604080832080546001600160d01b0319169055600a90915281208181556001015561122f33826121f9565b61123881612295565b336000908152600d60205260408120805460019290611258908490613224565b909155505060405181907f85837b804496fa8a31cf9284d2c34c3276ca3d5369cfe705026f7bad0365c0f290600090a2600854604051632142170760e11b81526001600160a01b03909116906342842e0e906112bc90309033908690600401612ed7565b600060405180830381600087803b1580156112d657600080fd5b505af11580156112ea573d6000803e3d6000fd5b5050505050565b60065460ff1661133b5760405162461bcd60e51b81526020600482015260156024820152746e6f7420696e20656d657267656e6379206d6f646560581b60448201526064016108f6565b6000818152600960205260409020546001600160a01b031633146113715760405162461bcd60e51b81526004016108f690613008565b600061137c82611b90565b9150506001600160801b0381166113a55760405162461bcd60e51b81526004016108f690612fb5565b600082815260096020908152604080832080546001600160d01b0319169055600a9091528120818155600101556113dc33836121f9565b6113e582612295565b336000908152600d60205260408120805460019290611405908490613224565b909155505060405182907f85837b804496fa8a31cf9284d2c34c3276ca3d5369cfe705026f7bad0365c0f290600090a2600854604051632142170760e11b81526001600160a01b03909116906342842e0e9061146990309033908790600401612ed7565b600060405180830381600087803b15801561148357600080fd5b505af1158015611497573d6000803e3d6000fd5b505050505050565b6060816001600160401b038111156114c757634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156114fa57816020015b60608152602001906001900390816114e55790505b50905060005b828110156108c9576000803086868581811061152c57634e487b7160e01b600052603260045260246000fd5b905060200281019061153e9190613090565b60405161154c929190612e97565b600060405180830381855af49150503d8060008114611587576040519150601f19603f3d011682016040523d82523d6000602084013e61158c565b606091505b5091509150816115d8576044815110156115a557600080fd5b600481019050808060200190518101906115bf9190612c20565b60405162461bcd60e51b81526004016108f69190612fa2565b808484815181106115f957634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061161190613267565b915050611500565b6002600054141561166c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108f6565b60026000819055507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170591906129d5565b6001600160a01b0316826001600160a01b0316146117815760405162461bcd60e51b815260206004820152603360248201527f556e697377617056335374616b65723a3a637265617465496e63656e746976656044820152720e881bdb9b1e481b585a1848185b1b1bddd959606a1b60648201526084016108f6565b600081116117f35760405162461bcd60e51b815260206004820152603960248201527f556e697377617056335374616b65723a3a637265617465496e63656e746976656044820152783a20726577617264206d75737420626520706f73697469766560381b60648201526084016108f6565b80600160008282546118059190613136565b90915550611818905062093a8042613136565b6004819055506118ba7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b15801561187a57600080fd5b505afa15801561188e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b291906129d5565b33308461236e565b60035460045460408051928352602083019190915281018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fd7a440eccc1b2ae97683e4d1cd3e4e1f17ec4eb738ff723eff7a664a33c417989060600160405180910390a250506001600055565b60065461010090046001600160a01b031633146119835760405162461bcd60e51b815260206004820152600c60248201526b6e6f742074696d656c6f636b60a01b60448201526064016108f6565b60065460ff16156119d25760405162461bcd60e51b8152602060048201526019602482015278616c726561647920696e20656d657267656e6379206d6f646560381b60448201526064016108f6565b6006805460ff1916600117905560408051631ef0061b60e11b81529051611b8e916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633de00c3691600480820192602092909190829003018186803b158015611a4457600080fd5b505afa158015611a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7c91906129d5565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b158015611ad657600080fd5b505afa158015611aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0e91906129d5565b6001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611b399190612ec3565b60206040518083038186803b158015611b5157600080fd5b505afa158015611b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b899190612d55565b6123fd565b565b6000818152600a6020526040902080546001600160a01b038116916001600160601b03600160a01b909204821691821415611bd65760018101546001600160801b031691505b50915091565b6000611be88383611d6c565b9392505050565b6000806064611bff8560146131dd565b611c099190613174565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635ebaf1db6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c6657600080fd5b505afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e91906129d5565b6001600160a01b03166370a08231856040518263ffffffff1660e01b8152600401611cc99190612ec3565b60206040518083038186803b158015611ce157600080fd5b505afa158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d199190612d55565b9050600060646005548388611d2e91906131dd565b611d399060506131dd565b611d439190613174565b611d4d9190613174565b9050611d62611d5c8285613136565b8761248a565b9695505050505050565b60065460009060ff1615611d925760405162461bcd60e51b81526004016108f690613065565b611d9b83611ffa565b336000908152600c60205260408120805491829190611dba8380613224565b92505081905550611e5c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633de00c366040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1d57600080fd5b505afa158015611e31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5591906129d5565b84836123fd565b826001600160a01b03167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724182604051611e9791815260200190565b60405180910390a29392505050565b6000806000806000806000886001600160a01b03166399fbab88896040518263ffffffff1660e01b8152600401611edf91815260200190565b6101806040518083038186803b158015611ef857600080fd5b505afa158015611f0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f309190612d91565b5050604051630b4c774160e11b8152949f50929d50909b509499509297509095506001600160a01b038f169450631698ee829350611f9c9250879150869086906004016001600160a01b03938416815291909216602082015262ffffff91909116604082015260600190565b60206040518083038186803b158015611fb457600080fd5b505afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec91906129d5565b965050505093509350935093565b6000818152600960209081526040808320815160608101835290546001600160a01b0381168252600160a01b8104600290810b810b810b94830194909452600160b81b9004830b830b90920b90820152908061205584611b90565b91509150806001600160801b0316600014156120835760405162461bcd60e51b81526004016108f690612fb5565b602083015160408085015190516351c403f960e11b8152600292830b6004820152910b60248201526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a38807f29060440160606040518083038186803b1580156120fa57600080fd5b505afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121329190612bc7565b50915050600080612164600154600260009054906101000a90046001600160a01b0316600354600454888a89426124a0565b6002805492945090925082916000906121879084906001600160a01b031661310b565b92506101000a8154816001600160a01b0302191690836001600160a01b0316021790555081600160008282546121bd9190613224565b909155505085516001600160a01b03166000908152600c6020526040812080548492906121eb908490613136565b909155505050505050505050565b6001600160a01b0382166000908152600d6020908152604080832054848452600f90925290912054808214612262576001600160a01b0384166000908152600e602090815260408083208584528252808320548484528184208190558352600f90915290208190555b506000918252600f602090815260408084208490556001600160a01b039094168352600e81528383209183525290812055565b6010546000906122a790600190613224565b600083815260116020526040812054601080549394509092849081106122dd57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050806010838154811061230c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260119091526040808220849055858252812055601080548061235257634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6001600160a01b0384163b6123eb5760405162461bcd60e51b815260206004820152603e60248201527f5472616e7366657248656c706572457874656e6465643a3a736166655472616e60448201527f7366657246726f6d3a2063616c6c20746f206e6f6e2d636f6e7472616374000060648201526084016108f6565b6123f784848484612535565b50505050565b6001600160a01b0383163b61247a5760405162461bcd60e51b815260206004820152603a60248201527f5472616e7366657248656c706572457874656e6465643a3a736166655472616e60448201527f736665723a2063616c6c20746f206e6f6e2d636f6e747261637400000000000060648201526084016108f6565b61248583838361263b565b505050565b60008183106124995781611be8565b5090919050565b600080878310156124c157634e487b7160e01b600052600160045260246000fd5b6001600160801b0386166124d586866131fc565b6124df91906131b7565b90506000896001600160a01b031660808a6124fa8b88612734565b6125049190613224565b61250f92911b613224565b90506125258b836001600160a01b031683612744565b9250509850989650505050505050565b600080856001600160a01b03166323b872dd60e01b86868660405160240161255f93929190612ed7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161259d9190612ea7565b6000604051808303816000865af19150503d80600081146125da576040519150601f19603f3d011682016040523d82523d6000602084013e6125df565b606091505b50915091508180156126095750805115806126095750808060200190518101906126099190612bad565b6114975760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016108f6565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291516000928392908716916126979190612ea7565b6000604051808303816000865af19150503d80600081146126d4576040519150601f19603f3d011682016040523d82523d6000602084013e6126d9565b606091505b50915091508180156127035750805115806127035750808060200190518101906127039190612bad565b6112ea5760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016108f6565b6000818310156124995781611be8565b60008080600019858709858702925082811083820303915050806000141561277e576000841161277357600080fd5b508290049050611be8565b80841161278a57600080fd5b6000848688098084039381119092039190506000856127ab81600019613224565b6127b6906001613136565b169586900495938490049360008190030460010190506127d681846131dd565b9093179260006127e78760036131dd565b60021890506127f681886131dd565b612801906002613224565b61280b90826131dd565b905061281781886131dd565b612822906002613224565b61282c90826131dd565b905061283881886131dd565b612843906002613224565b61284d90826131dd565b905061285981886131dd565b612864906002613224565b61286e90826131dd565b905061287a81886131dd565b612885906002613224565b61288f90826131dd565b905061289b81886131dd565b6128a6906002613224565b6128b090826131dd565b90506128bc81866131dd565b9998505050505050505050565b80516128d4816132c4565b919050565b600082601f8301126128e9578081fd5b813560206001600160401b03821115612904576129046132ae565b8160051b6129138282016130db565b83815282810190868401838801850189101561292d578687fd5b8693505b8584101561294f578035835260019390930192918401918401612931565b50979650505050505050565b805180151581146128d457600080fd5b8051600281900b81146128d457600080fd5b80516001600160801b03811681146128d457600080fd5b805161ffff811681146128d457600080fd5b805162ffffff811681146128d457600080fd5b6000602082840312156129ca578081fd5b8135611be8816132c4565b6000602082840312156129e6578081fd5b8151611be8816132c4565b600080600080600060808688031215612a08578081fd5b8535612a13816132c4565b94506020860135612a23816132c4565b93506040860135925060608601356001600160401b0380821115612a45578283fd5b818801915088601f830112612a58578283fd5b813581811115612a66578384fd5b896020828501011115612a77578384fd5b9699959850939650602001949392505050565b60008060408385031215612a9c578182fd5b8235612aa7816132c4565b946020939093013593505050565b60008060208385031215612ac7578182fd5b82356001600160401b0380821115612add578384fd5b818501915085601f830112612af0578384fd5b813581811115612afe578485fd5b8660208260051b8501011115612b12578485fd5b60209290920196919550909350505050565b600060208284031215612b35578081fd5b81356001600160401b03811115612b4a578182fd5b612b56848285016128d9565b949350505050565b60008060408385031215612b70578182fd5b82356001600160401b03811115612b85578283fd5b612b91858286016128d9565b9250506020830135612ba2816132c4565b809150509250929050565b600060208284031215612bbe578081fd5b611be88261295b565b600080600060608486031215612bdb578081fd5b83518060060b8114612beb578182fd5b6020850151909350612bfc816132c4565b604085015190925063ffffffff81168114612c15578182fd5b809150509250925092565b600060208284031215612c31578081fd5b81516001600160401b0380821115612c47578283fd5b818401915084601f830112612c5a578283fd5b815181811115612c6c57612c6c6132ae565b612c7f601f8201601f19166020016130db565b9150808252856020828501011115612c95578384fd5b612ca681602084016020860161323b565b50949350505050565b600080600080600080600060e0888a031215612cc9578485fd5b8751612cd4816132c4565b9650612ce26020890161296b565b9550612cf060408901612994565b9450612cfe60608901612994565b9350612d0c60808901612994565b925060a088015160ff81168114612d21578283fd5b9150612d2f60c0890161295b565b905092959891949750929550565b600060208284031215612d4e578081fd5b5035919050565b600060208284031215612d66578081fd5b5051919050565b60008060408385031215612d7f578182fd5b823591506020830135612ba2816132c4565b6000806000806000806000806000806000806101808d8f031215612db3578586fd5b8c516001600160601b0381168114612dc9578687fd5b9b50612dd760208e016128c9565b9a50612de560408e016128c9565b9950612df360608e016128c9565b9850612e0160808e016129a6565b9750612e0f60a08e0161296b565b9650612e1d60c08e0161296b565b9550612e2b60e08e0161297d565b94506101008d015193506101208d01519250612e4a6101408e0161297d565b9150612e596101608e0161297d565b90509295989b509295989b509295989b565b60008151808452612e8381602086016020860161323b565b601f01601f19169290920160200192915050565b8183823760009101908152919050565b60008251612eb981846020870161323b565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6020808252825182820181905260009190848201906040850190845b81811015612f35578351151583529284019291840191600101612f17565b50909695505050505050565b6000602080830181845280855180835260408601915060408160051b8701019250838701855b82811015612f9557603f19888603018452612f83858351612e6b565b94509285019290850190600101612f67565b5092979650505050505050565b602081526000611be86020830184612e6b565b60208082526033908201527f556e697377617056335374616b65723a3a756e7374616b65546f6b656e3a20736040820152721d185ad948191bd95cc81b9bdd08195e1a5cdd606a1b606082015260800190565b6020808252603d908201527f556e697377617056335374616b65723a3a7769746864726177546f6b656e3a2060408201527f6f6e6c79206f776e65722063616e20776974686472617720746f6b656e000000606082015260800190565b602080825260119082015270696e20656d657267656e6379206d6f646560781b604082015260600190565b6000808335601e198436030181126130a6578283fd5b8301803591506001600160401b038211156130bf578283fd5b6020019150368190038213156130d457600080fd5b9250929050565b604051601f8201601f191681016001600160401b0381118282101715613103576131036132ae565b604052919050565b60006001600160a01b0382811684821680830382111561312d5761312d613282565b01949350505050565b6000821982111561314957613149613282565b500190565b60006001600160801b038381168061316857613168613298565b92169190910492915050565b60008261318357613183613298565b500490565b60006001600160801b03828116848216811515828404821116156131ae576131ae613282565b02949350505050565b60006001600160a01b03828116848216811515828404821116156131ae576131ae613282565b60008160001904831182151516156131f7576131f7613282565b500290565b60006001600160a01b038381169083168181101561321c5761321c613282565b039392505050565b60008282101561323657613236613282565b500390565b60005b8381101561325657818101518382015260200161323e565b838111156123f75750506000910152565b600060001982141561327b5761327b613282565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146132d957600080fd5b5056fea26469706673582212201db284e1571e45ff6685a65b48e87ff291cf9fb2bdc28da21b4cc35c6d7ddb7264736f6c63430008040033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
