[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" } ], "name": "CancelRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Convert", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiverAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "eqbAmount", "type": "uint256" } ], "name": "FinalizeRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_xEqbAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_eqbAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_weeks", "type": "uint256" } ], "name": "Lock", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "eqbAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "add", "type": "bool" } ], "name": "SetTransferWhitelist", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "minRedeemRatio", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxRedeemRatio", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minRedeemDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxRedeemDuration", "type": "uint256" } ], "name": "UpdateRedeemSettings", "type": "event" }, { "inputs": [], "name": "MAX_FIXED_RATIO", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "burnAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "cancelRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "convert", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "convertTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eqb", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "finalizeRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "getEqbByVestingDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "redeemIndex", "type": "uint256" } ], "name": "getUserRedeem", "outputs": [ { "internalType": "uint256", "name": "eqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getUserRedeemsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isTransferWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_xEqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_weeks", "type": "uint256" } ], "name": "lock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemDuration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minRedeemRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" } ], "name": "redeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "redeemingAmounts", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_eqb", "type": "address" }, { "internalType": "address", "name": "_vlEqb", "type": "address" }, { "internalType": "address", "name": "_burnAddress", "type": "address" } ], "name": "setParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "transferWhitelist", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferWhitelistLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemRatio_", "type": "uint256" }, { "internalType": "uint256", "name": "minRedeemDuration_", "type": "uint256" }, { "internalType": "uint256", "name": "maxRedeemDuration_", "type": "uint256" } ], "name": "updateRedeemSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "add", "type": "bool" } ], "name": "updateTransferWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "userRedeems", "outputs": [ { "internalType": "uint256", "name": "eqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "xEqbAmount", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vlEqb", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61307080620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80638129fc1c1161017b578063b90c2b52116100d8578063dd62ed3e1161008c578063e3a2950b11610071578063e3a2950b146105ed578063e9ed87f8146105f6578063f2fde38b146105ff57600080fd5b8063dd62ed3e14610594578063de137c03146105cd57600080fd5b8063c4b10766116100bd578063c4b1076614610565578063ca6132921461056e578063cc6c54231461058157600080fd5b8063b90c2b5214610529578063be3f4d681461055257600080fd5b8063a081df7f1161012f578063a457c2d711610114578063a457c2d7146104f0578063a9059cbb14610503578063aff6cbf11461051657600080fd5b8063a081df7f146104ca578063a3908e1b146104dd57600080fd5b80638da5cb5b116101605780638da5cb5b1461049e57806395d89b41146104af578063983103e0146104b757600080fd5b80638129fc1c14610483578063890836541461048b57600080fd5b80634b359d3811610229578063646fcdd2116101dd57806370d5ae05116101c257806370d5ae0514610455578063715018a6146104685780637cbc23731461047057600080fd5b8063646fcdd21461041957806370a082311461042c57600080fd5b8063539ffb771161020e578063539ffb77146103eb5780635a1d34dc146103fe578063619ac95b1461041157600080fd5b80634b359d38146103925780634f62b7ec146103bd57600080fd5b80631c3526791161028057806323b872dd1161026557806323b872dd1461035d578063313ce56714610370578063395093511461037f57600080fd5b80631c352679146103415780631eee7e601461034a57600080fd5b80631338736f116102b15780631338736f1461030e578063161aab431461032357806318160ddd1461033957600080fd5b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d5610612565b6040516102e29190612bce565b60405180910390f35b6102fe6102f9366004612c1d565b6106a4565b60405190151581526020016102e2565b61032161031c366004612c47565b6106be565b005b61032b6108de565b6040519081526020016102e2565b60355461032b565b61032b60ce5481565b6102fe610358366004612c69565b6108ef565b6102fe61036b366004612c84565b6108fc565b604051601281526020016102e2565b6102fe61038d366004612c1d565b610922565b6103a56103a0366004612cc0565b610961565b6040516001600160a01b0390911681526020016102e2565b6103d06103cb366004612c1d565b61096e565b604080519384526020840192909252908201526060016102e2565b6103216103f9366004612cc0565b6109b0565b61032161040c366004612cd9565b610b49565b61032b606481565b60c9546103a5906001600160a01b031681565b61032b61043a366004612c69565b6001600160a01b031660009081526033602052604090205490565b60cb546103a5906001600160a01b031681565b610321610c01565b61032161047e366004612c47565b610c15565b610321610e3a565b610321610499366004612d13565b610fce565b6065546001600160a01b03166103a5565b6102d56110bf565b60ca546103a5906001600160a01b031681565b6103216104d8366004612d4a565b6110ce565b6103216104eb366004612cc0565b6112ca565b6102fe6104fe366004612c1d565b611333565b6102fe610511366004612c1d565b6113e8565b610321610524366004612cc0565b6113f6565b61032b610537366004612c69565b6001600160a01b0316600090815260d3602052604090205490565b61032b610560366004612c47565b6115ba565b61032b60d05481565b61032161057c366004612d8d565b611669565b6103d061058f366004612c1d565b61180b565b61032b6105a2366004612dbf565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61032b6105db366004612c69565b60d26020526000908152604090205481565b61032b60cf5481565b61032b60d15481565b61032161060d366004612c69565b611902565b60606036805461062190612de9565b80601f016020809104026020016040519081016040528092919081815260200182805461064d90612de9565b801561069a5780601f1061066f5761010080835404028352916020019161069a565b820191906000526020600020905b81548152906001019060200180831161067d57829003601f168201915b5050505050905090565b6000336106b281858561198f565b60019150505b92915050565b6002609754036107155760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002609755816107675760405162461bcd60e51b815260206004820152601f60248201527f6c6f636b3a2078457162416d6f756e742063616e6e6f74206265206e756c6c00604482015260640161070c565b60006107768262093a80612e39565b905060d0548110156107ca5760405162461bcd60e51b815260206004820152601660248201527f6c6f636b3a206475726174696f6e20746f6f206c6f7700000000000000000000604482015260640161070c565b6107d5333085611ae7565b60006107e184836115ba565b90506107ef33308684611d09565b60c95460ca5461080c916001600160a01b03908116911683611dcb565b60ca546040517fe2ab691d00000000000000000000000000000000000000000000000000000000815233600482015260248101839052604481018590526001600160a01b039091169063e2ab691d90606401600060405180830381600087803b15801561087857600080fd5b505af115801561088c573d6000803e3d6000fd5b505060408051878152602081018590529081018690523392507f0e31f07bae79135368ff475cf6c7f6abb31e0fd731e03c18ad425bd9406cf0c0915060600160405180910390a2505060016097555050565b60006108ea60cc611e74565b905090565b60006106b860cc83611e7e565b60003361090a858285611ea0565b610915858585611ae7565b60019150505b9392505050565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091906106b2908290869061095c908790612e50565b61198f565b60006106b860cc83611f2c565b60d3602052816000526040600020818154811061098a57600080fd5b600091825260209091206003909102018054600182015460029092015490935090915083565b600260975403610a025760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b600260975533600081815260d3602052604090205482908110610a7b5760405162461bcd60e51b815260206004820152602b60248201527f76616c696461746552656465656d3a2072656465656d20656e74727920646f6560448201526a1cc81b9bdd08195e1a5cdd60aa1b606482015260840161070c565b33600090815260d360205260408120805485908110610a9c57610a9c612e63565b90600052602060002090600302019050806001015460d26000336001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ae59190612e79565b92505081905550610afb30338360010154611ae7565b600181015460405190815233907f56d7520e387607a8daa892e3fed116badc2a636307bdc794b1c1aed97ae203f49060200160405180910390a2610b3e84611f38565b505060016097555050565b600260975403610b9b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b6002609755333b610bee5760405162461bcd60e51b815260206004820152601660248201527f636f6e76657274546f3a206e6f7420616c6c6f77656400000000000000000000604482015260640161070c565b610bf88282612019565b50506001609755565b610c096120d3565b610c13600061212d565b565b600260975403610c675760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b600260975581610cdf5760405162461bcd60e51b815260206004820152602160248201527f72656465656d3a2078457162416d6f756e742063616e6e6f74206265206e756c60448201527f6c00000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b60d054811015610d315760405162461bcd60e51b815260206004820152601860248201527f72656465656d3a206475726174696f6e20746f6f206c6f770000000000000000604482015260640161070c565b610d3c333084611ae7565b6000610d4883836115ba565b604080518581526020810183905290810184905290915033907fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76469060600160405180910390a28115610e245733600090815260d2602052604081208054859290610db3908490612e50565b909155505033600090815260d360209081526040918290208251606081018452848152918201869052918101610de98542612e50565b905281546001818101845560009384526020938490208351600390930201918255928201519281019290925560400151600290910155610e30565b610e3033338584611d09565b5050600160975550565b600054610100900460ff1615808015610e5a5750600054600160ff909116105b80610e745750303b158015610e74575060005460ff166001145b610ee65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161070c565b6000805460ff191660011790558015610f09576000805461ff0019166101001790555b610f1161218c565b610f856040518060400160405280600781526020017f6d617820455142000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f78455142000000000000000000000000000000000000000000000000000000008152506121ff565b8015610fcb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b610fd66120d3565b306001600160a01b038316036110545760405162461bcd60e51b815260206004820152603a60248201527f7570646174655472616e7366657257686974656c6973743a2043616e6e6f742060448201527f72656d6f766520784571622066726f6d2077686974656c697374000000000000606482015260840161070c565b801561106b5761106560cc83612283565b50611078565b61107660cc83612298565b505b604080516001600160a01b038416815282151560208201527f3a34209cb941a5d23a56dea730a13738454bc7daefd4bb32e8d7df58c1bd920d910160405180910390a15050565b60606037805461062190612de9565b6110d66120d3565b60c9546001600160a01b03161561112f5760405162461bcd60e51b815260206004820152601660248201527f736574506172616d733a20616c72656164792073657400000000000000000000604482015260640161070c565b6001600160a01b0383166111855760405162461bcd60e51b815260206004820152601d60248201527f736574506172616d733a206571622063616e6e6f74206265206e756c6c000000604482015260640161070c565b6001600160a01b0382166111db5760405162461bcd60e51b815260206004820152601f60248201527f736574506172616d733a20766c4571622063616e6e6f74206265206e756c6c00604482015260640161070c565b6001600160a01b0381166112575760405162461bcd60e51b815260206004820152602560248201527f736574506172616d733a206275726e416464726573732063616e6e6f7420626560448201527f206e756c6c000000000000000000000000000000000000000000000000000000606482015260840161070c565b60c980546001600160a01b0380861673ffffffffffffffffffffffffffffffffffffffff199283161790925560ca805485841690831617905560cb805492841692909116919091179055603260ce55606460cf556212750060d05562dd7c0060d1556112c460cc30612283565b50505050565b60026097540361131c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b600260975561132b8133612019565b506001609755565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156113d05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161070c565b6113dd828686840361198f565b506001949350505050565b6000336106b2818585611ae7565b6002609754036114485760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161070c565b600260975533600081815260d36020526040902054829081106114c15760405162461bcd60e51b815260206004820152602b60248201527f76616c696461746552656465656d3a2072656465656d20656e74727920646f6560448201526a1cc81b9bdd08195e1a5cdd60aa1b606482015260840161070c565b33600090815260d3602052604081208054859081106114e2576114e2612e63565b9060005260206000209060030201905080600201546114fe4290565b10156115725760405162461bcd60e51b815260206004820152603260248201527f66696e616c697a6552656465656d3a2076657374696e67206475726174696f6e60448201527f20686173206e6f7420656e646564207965740000000000000000000000000000606482015260840161070c565b600181015433600090815260d2602052604081208054909190611596908490612e79565b925050819055506115b1333383600101548460000154611d09565b610b3e84611f38565b600060d0548210156115ce575060006106b8565b60d1548211156115f957606460cf54846115e89190612e39565b6115f29190612e8c565b90506106b8565b600060d05460d15461160b9190612e79565b60ce5460cf5461161b9190612e79565b60d0546116289086612e79565b6116329190612e39565b61163c9190612e8c565b60ce546116499190612e50565b905060646116578286612e39565b6116619190612e8c565b949350505050565b6116716120d3565b828411156116d25760405162461bcd60e51b815260206004820152602860248201527f75706461746552656465656d53657474696e67733a2077726f6e6720726174696044820152676f2076616c75657360c01b606482015260840161070c565b8082106117475760405162461bcd60e51b815260206004820152602b60248201527f75706461746552656465656d53657474696e67733a2077726f6e67206475726160448201527f74696f6e2076616c756573000000000000000000000000000000000000000000606482015260840161070c565b60648311156117a95760405162461bcd60e51b815260206004820152602860248201527f75706461746552656465656d53657474696e67733a2077726f6e6720726174696044820152676f2076616c75657360c01b606482015260840161070c565b60ce84905560cf83905560d082905560d18190556040805185815260208101859052908101839052606081018290527ff282865353a487a40c4983b3a1a4e8901e81cb5605f653e6352dc57cdb5744889060800160405180910390a150505050565b6001600160a01b038216600090815260d360205260408120548190819085908590811061188e5760405162461bcd60e51b815260206004820152602b60248201527f76616c696461746552656465656d3a2072656465656d20656e74727920646f6560448201526a1cc81b9bdd08195e1a5cdd60aa1b606482015260840161070c565b6001600160a01b038716600090815260d3602052604081208054889081106118b8576118b8612e63565b60009182526020918290206040805160608101825260039390930290910180548084526001820154948401859052600290910154929091018290529a919950975095505050505050565b61190a6120d3565b6001600160a01b0381166119865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161070c565b610fcb8161212d565b6001600160a01b038316611a0a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161070c565b6001600160a01b038216611a865760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611b635760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161070c565b6001600160a01b038216611bdf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161070c565b611bea8383836122ad565b6001600160a01b03831660009081526033602052604090205481811015611c795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161070c565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290611cb0908490612e50565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cfc91815260200190565b60405180910390a36112c4565b6001600160a01b0383163014611d305760c954611d30906001600160a01b03168483612326565b80821115611d655760cb54611d65906001600160a01b0316611d528385612e79565b60c9546001600160a01b03169190612326565b611d6f30836123cf565b826001600160a01b0316846001600160a01b03167f97e9420300f4f0cbc2f0000a63fbde2ed410110b48c4e6866580ead3e95b42698484604051611dbd929190918252602082015260400190565b60405180910390a350505050565b604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015282919085169063dd62ed3e90604401602060405180830381865afa158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190612eae565b1015611e6f57611e596001600160a01b038416836000612560565b611e6f6001600160a01b03841683600019612560565b505050565b60006106b8825490565b6001600160a01b0381166000908152600183016020526040812054151561091b565b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146112c45781811015611f1f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161070c565b6112c4848484840361198f565b600061091b8383612695565b33600090815260d3602052604090208054611f5590600190612e79565b81548110611f6557611f65612e63565b906000526020600020906003020160d36000336001600160a01b03166001600160a01b031681526020019081526020016000208281548110611fa957611fa9612e63565b60009182526020808320845460039093020191825560018085015490830155600293840154939091019290925533815260d390915260409020805480611ff157611ff1612ec7565b6000828152602081206003600019909301928302018181556001810182905560020155905550565b816000036120695760405162461bcd60e51b815260206004820152601e60248201527f636f6e766572743a20616d6f756e742063616e6e6f74206265206e756c6c0000604482015260640161070c565b61207381836126bf565b604080516001600160a01b03831681526020810184905233917fccfaeb3043a96a967dc036ab72e078a9632af809671bc2a1ac30a8043645f89e910160405180910390a260c9546120cf906001600160a01b03163330856127aa565b5050565b6065546001600160a01b03163314610c135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161070c565b606580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166121f75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161070c565b610c136127fb565b600054610100900460ff1661226a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161070c565b60366122768382612f41565b506037611e6f8282612f41565b600061091b836001600160a01b03841661286f565b600061091b836001600160a01b0384166128be565b6001600160a01b03831615806122c957506122c960cc84611e7e565b806122da57506122da60cc83611e7e565b611e6f5760405162461bcd60e51b815260206004820152601560248201527f7472616e736665723a206e6f7420616c6c6f7765640000000000000000000000604482015260640161070c565b6040516001600160a01b038316602482015260448101829052611e6f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526129b1565b6001600160a01b03821661244b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b612457826000836122ad565b6001600160a01b038216600090815260336020526040902054818110156124e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161070c565b6001600160a01b0383166000908152603360205260408120838303905560358054849290612515908490612e79565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b8015806125da5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190612eae565b155b61264c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161070c565b6040516001600160a01b038316602482015260448101829052611e6f9084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161236b565b60008260000182815481106126ac576126ac612e63565b9060005260206000200154905092915050565b6001600160a01b0382166127155760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161070c565b612721600083836122ad565b80603560008282546127339190612e50565b90915550506001600160a01b03821660009081526033602052604081208054839290612760908490612e50565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526112c49085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161236b565b600054610100900460ff166128665760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161070c565b610c133361212d565b60008181526001830160205260408120546128b6575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106b8565b5060006106b8565b600081815260018301602052604081205480156129a75760006128e2600183612e79565b85549091506000906128f690600190612e79565b905081811461295b57600086600001828154811061291657612916612e63565b906000526020600020015490508087600001848154811061293957612939612e63565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061296c5761296c612ec7565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106b8565b60009150506106b8565b6000612a06826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a969092919063ffffffff16565b805190915015611e6f5780806020019051810190612a249190613001565b611e6f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161070c565b60606116618484600085856001600160a01b0385163b612af85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161070c565b600080866001600160a01b03168587604051612b14919061301e565b60006040518083038185875af1925050503d8060008114612b51576040519150601f19603f3d011682016040523d82523d6000602084013e612b56565b606091505b5091509150612b66828286612b71565b979650505050505050565b60608315612b8057508161091b565b825115612b905782518084602001fd5b8160405162461bcd60e51b815260040161070c9190612bce565b60005b83811015612bc5578181015183820152602001612bad565b50506000910152565b6020815260008251806020840152612bed816040850160208701612baa565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114612c1857600080fd5b919050565b60008060408385031215612c3057600080fd5b612c3983612c01565b946020939093013593505050565b60008060408385031215612c5a57600080fd5b50508035926020909101359150565b600060208284031215612c7b57600080fd5b61091b82612c01565b600080600060608486031215612c9957600080fd5b612ca284612c01565b9250612cb060208501612c01565b9150604084013590509250925092565b600060208284031215612cd257600080fd5b5035919050565b60008060408385031215612cec57600080fd5b82359150612cfc60208401612c01565b90509250929050565b8015158114610fcb57600080fd5b60008060408385031215612d2657600080fd5b612d2f83612c01565b91506020830135612d3f81612d05565b809150509250929050565b600080600060608486031215612d5f57600080fd5b612d6884612c01565b9250612d7660208501612c01565b9150612d8460408501612c01565b90509250925092565b60008060008060808587031215612da357600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612dd257600080fd5b612ddb83612c01565b9150612cfc60208401612c01565b600181811c90821680612dfd57607f821691505b602082108103612e1d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106b8576106b8612e23565b808201808211156106b8576106b8612e23565b634e487b7160e01b600052603260045260246000fd5b818103818111156106b8576106b8612e23565b600082612ea957634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612ec057600080fd5b5051919050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b601f821115611e6f57600081815260208120601f850160051c81016020861015612f1a5750805b601f850160051c820191505b81811015612f3957828155600101612f26565b505050505050565b815167ffffffffffffffff811115612f5b57612f5b612edd565b612f6f81612f698454612de9565b84612ef3565b602080601f831160018114612fa45760008415612f8c5750858301515b600019600386901b1c1916600185901b178555612f39565b600085815260208120601f198616915b82811015612fd357888601518255948401946001909101908401612fb4565b5085821015612ff15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561301357600080fd5b815161091b81612d05565b60008251613030818460208701612baa565b919091019291505056fea2646970667358221220064f9217e793f6f2d2ba3be800f32d9f1c54e6f6bd834181a052966ec26a02ad64736f6c63430008110033