Loading
[ { "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": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "HDRNStakeAddCapital", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "HDRNStakeEnd", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "HDRNStakeStart", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "payout", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "stakeDay", "type": "uint256" } ], "name": "HDRNStakingStats", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": true, "internalType": "uint40", "name": "stakeId", "type": "uint40" } ], "name": "HSIBuyBack", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "ICSAStakeAddCapital", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "data1", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "ICSAStakeEnd", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" } ], "name": "ICSAStakeStart", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "payoutIcsa", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "payoutHdrn", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "stakeDay", "type": "uint256" } ], "name": "ICSAStakingStats", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": true, "internalType": "uint96", "name": "nftId", "type": "uint96" } ], "name": "NFTStakeEnd", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": true, "internalType": "uint96", "name": "nftId", "type": "uint96" }, { "indexed": true, "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "NFTStakeStart", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "data", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "payout", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "stakeDay", "type": "uint256" } ], "name": "NFTStakingStats", "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" }, { "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": "currentDay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "hdrnPoolIcsaCollected", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "hdrnPoolPayout", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "hdrnPoolPoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "hdrnPoolPointsRemoved", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "hdrnSeedLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "hdrnStakeAddCapital", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "hdrnStakeEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "hdrnStakeStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hdrnStakes", "outputs": [ { "internalType": "uint64", "name": "stakeStart", "type": "uint64" }, { "internalType": "uint64", "name": "capitalAdded", "type": "uint64" }, { "internalType": "uint120", "name": "stakePoints", "type": "uint120" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "uint80", "name": "payoutPreCapitalAddIcsa", "type": "uint80" }, { "internalType": "uint80", "name": "payoutPreCapitalAddHdrn", "type": "uint80" }, { "internalType": "uint80", "name": "stakeAmount", "type": "uint80" }, { "internalType": "uint16", "name": "minStakeLength", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "hexStakeSell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "icsaPoolHdrnCollected", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "icsaPoolIcsaCollected", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "icsaPoolPayoutHdrn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "icsaPoolPayoutIcsa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "icsaPoolPoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "icsaPoolPointsRemoved", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "icsaSeedLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "icsaStakeAddCapital", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "icsaStakeEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "icsaStakeStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "icsaStakedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "icsaStakes", "outputs": [ { "internalType": "uint64", "name": "stakeStart", "type": "uint64" }, { "internalType": "uint64", "name": "capitalAdded", "type": "uint64" }, { "internalType": "uint120", "name": "stakePoints", "type": "uint120" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "uint80", "name": "payoutPreCapitalAddIcsa", "type": "uint80" }, { "internalType": "uint80", "name": "payoutPreCapitalAddHdrn", "type": "uint80" }, { "internalType": "uint80", "name": "stakeAmount", "type": "uint80" }, { "internalType": "uint16", "name": "minStakeLength", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "seedDays", "type": "uint256" } ], "name": "injectSeedLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "launchDay", "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": "nftPoolIcsaCollected", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftPoolPayout", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftPoolPoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nftPoolPointsRemoved", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "nftStakeEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "nftStakeStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftStakes", "outputs": [ { "internalType": "uint64", "name": "stakeStart", "type": "uint64" }, { "internalType": "uint64", "name": "capitalAdded", "type": "uint64" }, { "internalType": "uint120", "name": "stakePoints", "type": "uint120" }, { "internalType": "bool", "name": "isActive", "type": "bool" }, { "internalType": "uint80", "name": "payoutPreCapitalAddIcsa", "type": "uint80" }, { "internalType": "uint80", "name": "payoutPreCapitalAddHdrn", "type": "uint80" }, { "internalType": "uint80", "name": "stakeAmount", "type": "uint80" }, { "internalType": "uint16", "name": "minStakeLength", "type": "uint16" } ], "stateMutability": "view", "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": [], "name": "waatsa", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040518060400160405280600581526020016449636f736160d81b815250604051806040016040528060048152602001634943534160e01b81525081600390816200005e91906200077b565b5060046200006d82826200077b565b505060016005555060068054732b591e99afe9f32eaa6214f7b7629768c40eeb396001600160a01b03199182161790915560078054733819f64f282bf135d62168c1e513280daf905e06921682179055604080516308aed79560e21b815290516322bb5e54916004808201926020929091908290030181865afa158015620000f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011f919062000847565b600880546001600160a01b0319166001600160a01b0392831617905560075460408051635c9302c960e01b815290519190921691635c9302c99160048083019260209291908290030181865afa1580156200017e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a4919062000879565b600d819055600c556000805b600d548111620001fd576000620001c782620004a5565b905080604001516001600160481b031683620001e49190620008a9565b9250508080620001f490620008c4565b915050620001b0565b5060006200020a62000593565b90506000816040015164ffffffffff1683620002279190620008e0565b9050600061016861ffff16600d54620002419190620008a9565b6200024e906001620008a9565b90506000600d546001620002639190620008a9565b90505b81811015620002a1576200027d61016884620008e0565b6000828152600f6020526040902055806200029881620008c4565b91505062000266565b5060075460405163095ea7b360e01b8152733819f64f282bf135d62168c1e513280daf905e06600482015260001960248201526001600160a01b039091169063095ea7b3906044016020604051808303816000875af115801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000903565b506040516200033e90620006c8565b604051809103906000f0801580156200035b573d6000803e3d6000fd5b50600b80546001600160a01b03929092166001600160a01b031992831681179091556009805483169091179055600a6020527fd0bcf4df132c65dad73803c5e5e1c826f151a3342680034a8a4c8e5f8eb0c13c805482167388e6a0c2ddd26feeb64f039a2c41296fcb3f56401790557f1a192d851c7246a2e854d468b8fce1300360caaf9ef532bdd4a938b6e60ce505805482167369d91b94f0aaf8e8a2586909fa77a5c2c89818d51790557f49c0337e37bf3ff90f8f2224b7098d956517436a79e0bbdd4d1f8933bff305f88054821673e859041c9c6d70177f83de991b9d757e13cea26e179055730d86eb9f43c57f6ff3bc9e23d8f9d82503f0e84b6000527fb00adceb29fce4deb043f73faf0123befa9f1b4da7916a31392ed21ec1373d40805490911673f5595d56ccb6cb87a463c558cad04f49faa611491790555062000a9e92505050565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600754604051630c28945b60e31b81526004810184905260009182918291829182916001600160a01b031690636144a2d89060240160a060405180830381865afa15801562000523573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000549919062000944565b6040805160a0810182526001600160481b0396871681529486166020860152929094169183019190915263ffffffff16606082015260ff9091166080820152979650505050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152600080600080600080600080600660009054906101000a90046001600160a01b03166001600160a01b031663c31245256040518163ffffffff1660e01b815260040161010060405180830381865afa15801562000635573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200065b9190620009de565b60408051610100810182526001600160481b03998a168152978916602089015264ffffffffff96871690880152938716606087015261ffff90921660808601529490941660a0840152921660c08201526001600160801b0390911660e08201529998505050505050505050565b61217d8062006a2683390190565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200070157607f821691505b6020821081036200072257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077657600081815260208120601f850160051c81016020861015620007515750805b601f850160051c820191505b8181101562000772578281556001016200075d565b5050505b505050565b81516001600160401b03811115620007975762000797620006d6565b620007af81620007a88454620006ec565b8462000728565b602080601f831160018114620007e75760008415620007ce5750858301515b600019600386901b1c1916600185901b17855562000772565b600085815260208120601f198616915b828110156200081857888601518255948401946001909101908401620007f7565b5085821015620008375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200085a57600080fd5b81516001600160a01b03811681146200087257600080fd5b9392505050565b6000602082840312156200088c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115620008bf57620008bf62000893565b500190565b600060018201620008d957620008d962000893565b5060010190565b600082620008fe57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200091657600080fd5b815180151581146200087257600080fd5b80516001600160481b03811681146200093f57600080fd5b919050565b600080600080600060a086880312156200095d57600080fd5b620009688662000927565b9450620009786020870162000927565b9350620009886040870162000927565b9250606086015163ffffffff81168114620009a257600080fd5b608087015190925060ff81168114620009ba57600080fd5b809150509295509295909350565b805164ffffffffff811681146200093f57600080fd5b600080600080600080600080610100898b031215620009fc57600080fd5b62000a078962000927565b975062000a1760208a0162000927565b965062000a2760408a01620009c8565b955062000a3760608a0162000927565b9450608089015161ffff8116811462000a4f57600080fd5b935062000a5f60a08a0162000927565b925062000a6f60c08a01620009c8565b60e08a01519092506001600160801b038116811462000a8d57600080fd5b809150509295985092959890939650565b615f788062000aae6000396000f3fe6080604052600436106102675760003560e01c80637449f460116101445780639db820e8116100b6578063c1c9cabb1161007a578063c1c9cabb14610958578063d32aa2301461096e578063d52f66c614610981578063dd62ed3e146109ae578063e5a8a178146109ce578063eec0e91c146109e457600080fd5b80639db820e814610851578063a24daf6314610871578063a457c2d714610887578063a9059cbb146108a7578063bcead218146108c757600080fd5b80638a06a50c116101085780638a06a50c1461076f5780638dcedf7e1461078f578063900d58de146107bc578063919febd9146107f957806392db43831461082657806395d89b411461083c57600080fd5b80637449f460146106445780637cd87c68146106715780637d49a60d146106915780637f9e3f70146106b157806386a99e4a146106de57600080fd5b806337030bc0116101dd578063575a3ca6116101a1578063575a3ca61461055d5780635c9302c9146105735780635dbc0d28146105895780635ded9640146105b65780637088b292146105ee57806370a082311461060e57600080fd5b806337030bc0146103f8578063395093511461040e578063489a347f1461042e57806349189b8614610525578063506a37f11461053b57600080fd5b80631f4980051161022f5780631f4980051461033357806323b872dd146103635780632e3f581114610383578063313ce56714610399578063315e3c90146103b557806331da8822146103cb57600080fd5b8063056576a81461026c5780630585423d1461029f57806306fdde03146102cc578063095ea7b3146102ee57806318160ddd1461031e575b600080fd5b34801561027857600080fd5b5061028c6102873660046155f3565b610a11565b6040519081526020015b60405180910390f35b3480156102ab57600080fd5b5061028c6102ba3660046155f3565b60106020526000908152604090205481565b3480156102d857600080fd5b506102e1610d66565b604051610296919061560c565b3480156102fa57600080fd5b5061030e610309366004615676565b610df8565b6040519015158152602001610296565b34801561032a57600080fd5b5060025461028c565b34801561033f57600080fd5b50610348610e13565b60408051938452602084019290925290820152606001610296565b34801561036f57600080fd5b5061030e61037e3660046156a2565b61140f565b34801561038f57600080fd5b5061028c60195481565b3480156103a557600080fd5b5060405160098152602001610296565b3480156103c157600080fd5b5061028c601a5481565b3480156103d757600080fd5b5061028c6103e63660046155f3565b60156020526000908152604090205481565b34801561040457600080fd5b5061028c600c5481565b34801561041a57600080fd5b5061030e610429366004615676565b61142c565b34801561043a57600080fd5b506104bf6104493660046156e3565b601260205260009081526040902080546001909101546001600160401b0380831692600160401b810490911691600160801b82046001600160781b031691600160f81b900460ff16906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900461ffff1688565b604080516001600160401b03998a1681529890971660208901526001600160781b039095169587019590955291151560608601526001600160501b03908116608086015290811660a085015290911660c083015261ffff1660e082015261010001610296565b34801561053157600080fd5b5061028c601c5481565b34801561054757600080fd5b5061055b610556366004615700565b611458565b005b34801561056957600080fd5b5061028c60215481565b34801561057f57600080fd5b5061028c600d5481565b34801561059557600080fd5b5061028c6105a43660046155f3565b60176020526000908152604090205481565b3480156105c257600080fd5b50600b546105d6906001600160a01b031681565b6040516001600160a01b039091168152602001610296565b3480156105fa57600080fd5b5061028c6106093660046155f3565b61169e565b34801561061a57600080fd5b5061028c6106293660046156e3565b6001600160a01b031660009081526020819052604090205490565b34801561065057600080fd5b5061028c61065f3660046155f3565b600e6020526000908152604090205481565b34801561067d57600080fd5b5061028c61068c3660046155f3565b611a90565b34801561069d57600080fd5b5061028c6106ac3660046155f3565b611d4a565b3480156106bd57600080fd5b5061028c6106cc3660046155f3565b60116020526000908152604090205481565b3480156106ea57600080fd5b506104bf6106f93660046156e3565b601860205260009081526040902080546001909101546001600160401b0380831692600160401b810490911691600160801b82046001600160781b031691600160f81b900460ff16906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900461ffff1688565b34801561077b57600080fd5b5061028c61078a3660046155f3565b61208d565b34801561079b57600080fd5b5061028c6107aa3660046155f3565b60166020526000908152604090205481565b3480156107c857600080fd5b506107d16125a0565b604080519586526020860194909452928401919091526060830152608082015260a001610296565b34801561080557600080fd5b5061028c6108143660046155f3565b601d6020526000908152604090205481565b34801561083257600080fd5b5061028c60205481565b34801561084857600080fd5b506102e1612c24565b34801561085d57600080fd5b5061028c61086c3660046155f3565b612c33565b34801561087d57600080fd5b5061028c60145481565b34801561089357600080fd5b5061030e6108a2366004615676565b612e4f565b3480156108b357600080fd5b5061030e6108c2366004615676565b612ed5565b3480156108d357600080fd5b506104bf6108e23660046155f3565b601f60205260009081526040902080546001909101546001600160401b0380831692600160401b810490911691600160801b82046001600160781b031691600160f81b900460ff16906001600160501b0380821691600160501b8104821691600160a01b82041690600160f01b900461ffff1688565b34801561096457600080fd5b5061028c601b5481565b61028c61097c366004615722565b612ee9565b34801561098d57600080fd5b5061028c61099c3660046155f3565b600f6020526000908152604090205481565b3480156109ba57600080fd5b5061028c6109c9366004615752565b613349565b3480156109da57600080fd5b5061028c60135481565b3480156109f057600080fd5b5061028c6109ff3660046155f3565b601e6020526000908152604090205481565b6000600260055403610a3e5760405162461bcd60e51b8152600401610a3590615780565b60405180910390fd5b6002600555610a4b613374565b610a536155ac565b336000908152601260205260409020610a6c9082613c7e565b606081015115610ab35760405162461bcd60e51b8152602060048201526012602482015271494353413a205354414b452045584953545360701b6044820152606401610a35565b6007546040516370a0823160e01b815233600482015284916001600160a01b0316906370a0823190602401602060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f91906157b7565b1015610b3d5760405162461bcd60e51b8152600401610a35906157d0565b6000610b47613d04565b90506000816040015164ffffffffff1685610b629190615827565b90506000600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd91906157b7565b610bef670de0b6b3a76400008861583b565b610bf99190615827565b905060008211610c1b5760405162461bcd60e51b8152600401610a359061585a565b6000610c2682613e36565b9050610c386000848960003386613ec6565b8260106000600d546001610c4c9190615883565b81526020019081526020016000206000828254610c699190615883565b90915550506007546040516323b872dd60e01b81526001600160a01b03909116906323b872dd90610ca290339030908c9060040161589b565b6020604051808303816000875af1158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce591906158d4565b5060405164ffffffffff4216600160281b600160a01b03602886901b1617600160a01b600160f01b0360a08a901b16176001600160f01b031960f084901b1617815233907fe788b3001ad37e70b4a10fb943ba800586546dabb1a708bfdc6e157dd85e14e0906020015b60405180910390a250506001600555949350505050565b606060038054610d75906158ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610da1906158ef565b8015610dee5780601f10610dc357610100808354040283529160200191610dee565b820191906000526020600020905b815481529060010190602001808311610dd157829003601f168201915b5050505050905090565b6000610e02613374565b610e0c83836144c9565b9392505050565b6000806000600260055403610e3a5760405162461bcd60e51b8152600401610a3590615780565b6002600555610e47613374565b610e4f6155ac565b336000908152601260205260409020610e689082613c7e565b60608101511515600114610e8e5760405162461bcd60e51b8152600401610a3590615929565b600d54815103610fc15760075460c082015160405163a9059cbb60e01b815233600482015260248101919091526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015610eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1391906158d4565b50806040015160136000828254610f2a9190615883565b9091555050600080825260208083018290526040808401839052606084018390526080840183905260c0840183905260e0840183905233835260129091529020610f7490826144d7565b6040514264ffffffffff16815233907f691ec36fa17780b806f2a7b7c8311573d30645afa8fc2927fbf8af71df17577e9060200160405180910390a2600080600093509350935050611403565b60208082015160009081526011909152604080822054600d54835290822054610fea9190615951565b90506000806000806000600d548760e00151886020015161100b9190615883565b11156111875760008760200151600d546110259190615951565b9050670de0b6b3a7640000878960400151611040919061583b565b61104a9190615827565b88608001516110599190615883565b955061106a8860e0015182886145c7565b909650935061107a600385615827565b6014600082825461108b9190615883565b9091555061109c9050600385615827565b601a60008282546110ad9190615883565b909155506110be9050600385615827565b602160008282546110cf9190615883565b925050819055508760c0015192506110ec8860e0015182856145c7565b60075491945092506001600160a01b031663d240a93a61110d600285615827565b6040518263ffffffff1660e01b815260040161112b91815260200190565b600060405180830381600087803b15801561114557600080fd5b505af1158015611159573d6000803e3d6000fd5b5050505060028261116a9190615827565b601b600082825461117b9190615883565b90915550611262915050565b600754604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906157b7565b670de0b6b3a76400008960c0015161120d919061583b565b6112179190615827565b9050670de0b6b3a7640000878960400151611232919061583b565b61123c9190615827565b886080015161124b9190615883565b95506112578187614637565b94508760c001519250505b8660400151601360008282546112789190615883565b9091555050600080885260208089018290526040808a0183905260608a0183905260808a0183905260c08a0183905260e08a01839052338352601290915290206112c290886144d7565b83602160008282546112d49190615883565b909155505084156112f2576112f2336112ed8688615883565b61472e565b811561136f5760075460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015611349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136d91906158d4565b505b337f691ec36fa17780b806f2a7b7c8311573d30645afa8fc2927fbf8af71df17577e6001600160b81b031960b886901b1668ffffffffffffffffff60701b607085901b1660286113bf898b615883565b6001600160481b0316901b4264ffffffffff161717176040516113e491815260200190565b60405180910390a26113f68486615883565b9950975090955050505050505b60016005559192909190565b6000611419613374565b611424848484614825565b949350505050565b60003361144e81858561143f8383613349565b6114499190615883565b61483e565b5060019392505050565b60026005540361147a5760405162461bcd60e51b8152600401610a3590615780565b60026005556007546040516370a0823160e01b815233600482015283916001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb91906157b7565b10156115095760405162461bcd60e51b8152600401610a35906157d0565b600181101561154b5760405162461bcd60e51b815260206004820152600e60248201526d1250d4d04e881313d5c814d1515160921b6044820152606401610a35565b6000611555613d04565b90506000816040015164ffffffffff16846115709190615827565b9050600083600d546115829190615883565b61158d906001615883565b90506000600d5460016115a09190615883565b90505b81811015611619576115b58584615827565b6000828152600f6020526040812080549091906115d3908490615883565b909155506115e390508587615827565b6000828152600e602052604081208054909190611601908490615883565b9091555081905061161181615968565b9150506115a3565b506007546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061164e90339030908a9060040161589b565b6020604051808303816000875af115801561166d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169191906158d4565b5050600160055550505050565b60006002600554036116c25760405162461bcd60e51b8152600401610a3590615780565b60026005556116cf613374565b6116d76155ac565b3360009081526012602052604090206116f09082613c7e565b606081015115156001146117165760405162461bcd60e51b8152600401610a3590615929565b6007546040516370a0823160e01b815233600482015284916001600160a01b0316906370a0823190602401602060405180830381865afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178291906157b7565b10156117a05760405162461bcd60e51b8152600401610a35906157d0565b60006117aa613d04565b90506000816040015164ffffffffff16856117c59190615827565b90506000600760009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184091906157b7565b670de0b6b3a7640000878660c001516118599190615883565b611863919061583b565b61186d9190615827565b90506000821161188f5760405162461bcd60e51b8152600401610a359061585a565b60208085015160009081526011909152604080822054600d548352908220546118b89190615951565b90506000670de0b6b3a76400008287604001516118d5919061583b565b6118df9190615827565b905060006118ec84613e36565b600d546020890152604088018051919250869161190a908390615883565b905250608087018051839190611921908390615883565b90525060c0870180518a9190611938908390615883565b90525060e0870181905233600090815260126020526040902061195b90886144d7565b8460106000600d54600161196f9190615883565b8152602001908152602001600020600082825461198c9190615883565b90915550506007546040516323b872dd60e01b81526001600160a01b03909116906323b872dd906119c590339030908e9060040161589b565b6020604051808303816000875af11580156119e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0891906158d4565b5060405164ffffffffff4216600160281b600160a01b03602888901b1617600160a01b600160f01b0360a08c901b16176001600160f01b031960f084901b1617815233907f521348e3eb7a7581b15bc45eb12d596f2d6b1afecbbcd5456297a9af36569b099060200160405180910390a2505050604090930151600160055595945050505050565b6000600260055403611ab45760405162461bcd60e51b8152600401610a3590615780565b6002600555611ac1613374565b6009546040516331a9108f60e11b81526004810184905233916001600160a01b031690636352211e90602401602060405180830381865afa158015611b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2e9190615981565b6001600160a01b031614611b765760405162461bcd60e51b815260206004820152600f60248201526e24a1a9a09d102727aa1027aba722a960891b6044820152606401610a35565b611b7e6155ac565b6000838152601f60205260409020611b969082613c7e565b60608101511515600114611bbc5760405162461bcd60e51b8152600401610a3590615929565b6020808201516000908152601e909152604080822054600d54835290822054611be59190615951565b90506000670de0b6b3a7640000828460400151611c02919061583b565b611c0c9190615827565b9050826040015160206000828254611c249190615883565b9091555050600080845260208085018290526040808601839052606086018390526080860183905260a0860183905260c0860183905260e08601839052878352601f9091529020611c7590846144d7565b8015611c8557611c85338261472e565b60095460405163536e3b6960e01b8152600481018790526001600160a01b039091169063536e3b6990602401600060405180830381600087803b158015611ccb57600080fd5b505af1158015611cdf573d6000803e3d6000fd5b505060405164ffffffffff421664ffffffffff19602886901b161781526bffffffffffffffffffffffff881692503391507fb7f0616ddeb345010290b104677427d25d0689b85ffe1be21abf86913be9efa89060200160405180910390a36001600555949350505050565b6000600260055403611d6e5760405162461bcd60e51b8152600401610a3590615780565b6002600555611d7b613374565b611d836155ac565b336000908152601860205260409020611d9c9082613c7e565b60608101511515600114611dc25760405162461bcd60e51b8152600401610a3590615929565b33600090815260208190526040902054831115611df15760405162461bcd60e51b8152600401610a35906157d0565b6000611dfb613d04565b90506000816040015164ffffffffff1685611e169190615827565b90506000611e2360025490565b670de0b6b3a7640000878660c00151611e3c9190615883565b611e46919061583b565b611e509190615827565b905060008211611e725760405162461bcd60e51b8152600401610a359061585a565b60208085015160009081526016909152604080822054600d54835290822054611e9b9190615951565b90506000670de0b6b3a7640000828760400151611eb8919061583b565b611ec29190615827565b60208088015160009081526017909152604080822054600d548352908220549293509091611ef09190615951565b90506000670de0b6b3a7640000828960400151611f0d919061583b565b611f179190615827565b90506000611f2486613e36565b600d5460208b015260408a0180519192508891611f42908390615883565b905250608089018051859190611f59908390615883565b90525060a089018051839190611f70908390615883565b90525060c0890180518c9190611f87908390615883565b90525060e08901819052336000908152601860205260409020611faa908a6144d7565b8660156000600d546001611fbe9190615883565b81526020019081526020016000206000828254611fdb9190615883565b925050819055508a601c6000828254611ff49190615883565b909155506120049050338c614962565b60405164ffffffffff4216600160281b600160a01b0360288a901b1617600160a01b600160f01b0360a08e901b16176001600160f01b031960f084901b1617815233907f0854f798f9f9df58c78bece0e97434349916af9a8737bc9b915500934bf8637b9060200160405180910390a25050506040909501516001600555979650505050505050565b60006002600554036120b15760405162461bcd60e51b8152600401610a3590615780565b60026005556120be613374565b6008546040516331a9108f60e11b81526004810184905233916001600160a01b031690636352211e90602401602060405180830381865afa158015612107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212b9190615981565b6001600160a01b0316146121735760405162461bcd60e51b815260206004820152600f60248201526e24a1a9a09d102727aa1027aba722a960891b6044820152606401610a35565b6008546040516304c8b84160e21b8152600481018490526000916121ec916001600160a01b0390911690631322e10490602401602060405180830381865afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e79190615981565b614ac3565b905060006121f8613d04565b90506000826020015183600001516060015161ffff166122189190615951565b83516020015161223191906001600160481b031661583b565b90506000600a8360400151612246919061599e565b6122579064ffffffffff1683615827565b90506000811161229b5760405162461bcd60e51b815260206004820152600f60248201526e494353413a204c4f572056414c554560881b6044820152606401610a35565b600080826103e887604001516103e86122b49190615883565b6122be908661583b565b6122c89190615827565b6122d29190615951565b86516060015190915061ffff166115b30361230c578260646122f582606e61583b565b6122ff9190615827565b6123099190615951565b91505b6123168183615883565b602160008282546123279190615883565b909155506123469050338261233c8587615883565b6112ed9190615883565b6008546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061237a90339030908d9060040161589b565b600060405180830381600087803b15801561239457600080fd5b505af11580156123a8573d6000803e3d6000fd5b50506008546040516362d02f9960e11b8152600481018c9052600093506001600160a01b03909116915063c5a05f32906024016020604051808303816000875af11580156123fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241e9190615981565b60085460405163b947e62960e01b81523060048201529192506000916001600160a01b039091169063b947e62990602401602060405180830381865afa15801561246c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249091906157b7565b6007549091506001600160a01b0316632f52ca366124af600184615951565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b03851660248201526044016020604051808303816000875af11580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252091906157b7565b601b60008282546125319190615883565b909155505087515160405186815264ffffffffff9091169033907ff38c7e8f612bd11578c66e2677f9b54409206a11d6bc88cb4ef861d3181c85389060200160405180910390a3826125838587615883565b61258d9190615883565b60016005559a9950505050505050505050565b60008060008060006002600554036125ca5760405162461bcd60e51b8152600401610a3590615780565b60026005556125d7613374565b6125df6155ac565b3360009081526018602052604090206125f89082613c7e565b6060810151151560011461261e5760405162461bcd60e51b8152600401610a3590615929565b600d5481510361271357612636338260c0015161472e565b80604001516019600082825461264c9190615883565b909155505060c0810151601c8054600090612668908490615951565b9091555050600080825260208083018290526040808401839052606084018390526080840183905260a0840183905260c0840183905260e08401839052338352601890915290206126b990826144d7565b604080514264ffffffffff1681526000602082015233917f44c0595037945d4099be07a040af8225c659f4a81d57377ea76e0b6143f07615910160405180910390a260008060008060009550955095509550955050612c15565b60208082015160009081526016909152604080822054600d5483529082205461273c9190615951565b60208084015160009081526017909152604080822054600d54835290822054929350909161276a9190615951565b90506000806000806000806000600d548a60e001518b6020015161278e9190615883565b11156129745760008a60200151600d546127a89190615951565b9050670de0b6b3a76400008a8c604001516127c3919061583b565b6127cd9190615827565b8b608001516127dc9190615883565b97506127ed8b60e00151828a6145c7565b60408d01519199509550670de0b6b3a76400009061280c908b9061583b565b6128169190615827565b8b60a001516128259190615883565b95506128368b60e0015182886145c7565b60c08d015160e08e015192985090955093506128539082856145c7565b909350915060036128648387615883565b61286e9190615827565b6014600082825461287f9190615883565b90915550600390506128918387615883565b61289b9190615827565b601a60008282546128ac9190615883565b90915550600390506128be8387615883565b6128c89190615827565b602160008282546128d99190615883565b90915550506007546001600160a01b031663d240a93a6128fa600287615827565b6040518263ffffffff1660e01b815260040161291891815260200190565b600060405180830381600087803b15801561293257600080fd5b505af1158015612946573d6000803e3d6000fd5b505050506002846129579190615827565b601b60008282546129689190615883565b90915550612a20915050565b600061297f60025490565b670de0b6b3a76400008c60c00151612997919061583b565b6129a19190615827565b9050670de0b6b3a76400008a8c604001516129bc919061583b565b6129c69190615827565b8b608001516129d59190615883565b9750670de0b6b3a7640000898c604001516129f0919061583b565b6129fa9190615827565b8b60a00151612a099190615883565b9550612a158189614637565b96508a60c001519250505b896040015160196000828254612a369190615883565b909155505060c08a0151601c8054600090612a52908490615951565b90915550506000808b526020808c018290526040808d0183905260608d0183905260808d0183905260a08d0183905260c08d0183905260e08d0183905233835260189091529020612aa3908b6144d7565b8560216000828254612ab59190615883565b9091555060009050612ac78389615883565b1115612adc57612adc338761233c858b615883565b8415612b595760075460405163a9059cbb60e01b8152336004820152602481018790526001600160a01b039091169063a9059cbb906044016020604051808303816000875af1158015612b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b5791906158d4565b505b337f44c0595037945d4099be07a040af8225c659f4a81d57377ea76e0b6143f076156001600160b81b031960b884901b1668ffffffffffffffffff60701b607089901b166028612ba98b8d615883565b6001600160481b0316901b4264ffffffffff161717176080866001600160801b0316901b876001600160801b031617604051612bef929190918252602082015260400190565b60405180910390a2612c018688615883565b9e50939c50929a5090985096505050505050505b60016005819055509091929394565b606060048054610d75906158ef565b6000600260055403612c575760405162461bcd60e51b8152600401610a3590615780565b6002600555612c64613374565b612c6c6155ac565b336000908152601860205260409020612c859082613c7e565b606081015115612ccc5760405162461bcd60e51b8152602060048201526012602482015271494353413a205354414b452045584953545360701b6044820152606401610a35565b33600090815260208190526040902054831115612cfb5760405162461bcd60e51b8152600401610a35906157d0565b6000612d05613d04565b90506000816040015164ffffffffff1685612d209190615827565b90506000612d2d60025490565b612d3f670de0b6b3a76400008861583b565b612d499190615827565b905060008211612d6b5760405162461bcd60e51b8152600401610a359061585a565b6000612d7682613e36565b9050612d886001848960003386613ec6565b8260156000600d546001612d9c9190615883565b81526020019081526020016000206000828254612db99190615883565b9250508190555086601c6000828254612dd29190615883565b90915550612de290503388614962565b60405164ffffffffff4216600160281b600160a01b03602886901b1617600160a01b600160f01b0360a08a901b16176001600160f01b031960f084901b1617815233907fef17058620372de420cb487f9cd2d4fde6511e5f6096d9ddf8f0834bd302804990602001610d4f565b60003381612e5d8286613349565b905083811015612ebd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a35565b612eca828686840361483e565b506001949350505050565b6000612edf613374565b610e0c8383614c1c565b6000600260055403612f0d5760405162461bcd60e51b8152600401610a3590615780565b6002600555612f1a613374565b600c54612f2990600e90615883565b600d5410612f6a5760405162461bcd60e51b815260206004820152600e60248201526d494353413a20544f4f204c41544560901b6044820152606401610a35565b46600114612fac5760405162461bcd60e51b815260206004820152600f60248201526e24a1a9a09d102120a21021a420a4a760891b6044820152606401610a35565b600080836001600160a01b03811661308957348614612fca57600080fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600052600a6020527fd0bcf4df132c65dad73803c5e5e1c826f151a3342680034a8a4c8e5f8eb0c13c546130249061301f906001600160a01b0316614c2a565b614d84565b92508261303587600160601b61583b565b61303f9190615827565b60405190925073f447be386164dadfb5d1e7622613f289f17024d89087156108fc029088906000818181858888f19350505050158015613083573d6000803e3d6000fd5b506131fd565b6001600160a01b038086166000818152600a60205260409020549091169073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48148015906130d157506001600160a01b038116155b156130db57600080fd5b6001600160a01b03861673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb481461316f5773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc1196001600160a01b038716016131525761313061301f82614c2a565b93508361314188600160601b61583b565b61314b9190615827565b9250613173565b61315e61301f82614c2a565b9350600160601b613141858961583b565b8692505b6040516323b872dd60e01b81526001600160a01b038316906323b872dd906131b790339073f447be386164dadfb5d1e7622613f289f17024d8908c9060040161589b565b6020604051808303816000875af11580156131d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fa91906158d4565b50505b6000821161321d5760405162461bcd60e51b8152600401610a359061585a565b6009546040516366adc13760e01b81523360048201526000916001600160a01b0316906366adc137906024016020604051808303816000875af1158015613268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328c91906157b7565b905061329f600284600084600080613ec6565b82601d6000600d5460016132b39190615883565b815260200190815260200160002060008282546132d09190615883565b909155505060405164ffffffffff421664ffffffffff19602886901b161781526001600160a01b038716906bffffffffffffffffffffffff83169033907f818ab9605c396693e5f640cd603e9dd39debc6c90dd214a41bc1c683c71521bf9060200160405180910390a450506001600555949350505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60075460408051635c9302c960e01b815290516000926001600160a01b031691635c9302c99160048083019260209291908290030181865afa1580156133be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e291906157b7565b905080600d541015613c7b576000600d54826133fe9190615951565b905060005b81811015613c78576000613415613d04565b90506000613424600d54614d9e565b905060008060135460106000600d5481526020019081526020016000205460106000600d5460016134559190615883565b81526020019081526020016000205461346e9190615883565b6134789190615951565b9150811561354d57670de0b6b3a7640000600f6000600d54600161349c9190615883565b8152602001908152602001600020546134b5919061583b565b670de0b6b3a76400006014546134cb919061583b565b856040015164ffffffffff16670de0b6b3a764000086604001516001600160481b03166134f8919061583b565b6135029190615827565b61350c9190615883565b6135169190615883565b90506135228282615827565b600d546000908152601160205260409020549091506135419082615883565b600060145590506135c4565b50600d5460008181526011602052604081205491600f9190613570906001615883565b815260200190815260200160002054846040015164ffffffffff16846040015161359a91906159c2565b6001600160481b03166135ad9190615883565b601460008282546135be9190615883565b90915550505b8060116000600d5460016135d89190615883565b8152602001908152602001600020819055508160106000600d5460016135fe9190615883565b8152602081019190915260400160002055600d5461361d906001615883565b7f877ae8179b54bd750e71120a4bdf606a021b47d9e3877dbce1a45aa47f83544760986013546001600160681b0316901b6030856001600160681b0316901b4265ffffffffffff1617178360405161367f929190918252602082015260400190565b60405180910390a260006013819055601954600d5480835260156020819052604084205484939290919084906136b6906001615883565b8152602001908152602001600020546136cf9190615883565b6136d99190615951565b9350831561383557670de0b6b3a7640000600f6000600d5460016136fd9190615883565b815260200190815260200160002054613716919061583b565b670de0b6b3a7640000601a5461372c919061583b565b876040015164ffffffffff16670de0b6b3a764000088604001516001600160481b0316613759919061583b565b6137639190615827565b61376d9190615883565b6137779190615883565b91506137838483615827565b600d546000908152601660205260409020549092506137a29083615883565b9150670de0b6b3a7640000600e6000600d5460016137c09190615883565b8152602001908152602001600020546137d9919061583b565b670de0b6b3a7640000601b546137ef919061583b565b6137f99190615883565b90506138058482615827565b600d546000908152601760205260409020549091506138249082615883565b6000601a819055601b5590506138f3565b5050600d54600081815260166020908152604080832054601790925282205490929091600f91613866906001615883565b815260200190815260200160002054866040015164ffffffffff16866040015161389091906159c2565b6001600160481b03166138a39190615883565b601a60008282546138b49190615883565b9091555050600d54600e906000906138cd906001615883565b815260200190815260200160002054601b60008282546138ed9190615883565b90915550505b8160166000600d5460016139079190615883565b8152602001908152602001600020819055508060176000600d54600161392d9190615883565b8152602001908152602001600020819055508360156000600d5460016139539190615883565b8152602081019190915260400160002055600d54613972906001615883565b7f2293c18662e2dd67e3a27c045f8d72254b7ffd71ec7cef7b8ac0dd4064d7f48460986019546001600160681b0316901b6030876001600160681b0316901b4265ffffffffffff16171784846040516139de939291909283526020830191909152604082015260600190565b60405180910390a26000601981905560208054600d54808452601d9283905260408420549192908490613a12906001615883565b815260200190815260200160002054613a2b9190615883565b613a359190615951565b94508415613b0a57670de0b6b3a7640000600f6000600d546001613a599190615883565b815260200190815260200160002054613a72919061583b565b670de0b6b3a7640000602154613a88919061583b565b886040015164ffffffffff16670de0b6b3a764000089604001516001600160481b0316613ab5919061583b565b613abf9190615827565b613ac99190615883565b613ad39190615883565b9050613adf8582615827565b600d546000908152601e6020526040902054909150613afe9082615883565b60006021559050613b81565b50600d546000818152601e602052604081205491600f9190613b2d906001615883565b815260200190815260200160002054876040015164ffffffffff168760400151613b5791906159c2565b6001600160481b0316613b6a9190615883565b60216000828254613b7b9190615883565b90915550505b80601e6000600d546001613b959190615883565b81526020019081526020016000208190555084601d6000600d546001613bbb9190615883565b8152602081019190915260400160002055600d54613bda906001615883565b7fc9ad92dd5085bdc5c481f558e473cd6f74135d5b8d4e72f2729edc931e588ccd60986020546001600160681b0316901b6030886001600160681b0316901b4265ffffffffffff16171783604051613c3c929190918252602082015260400190565b60405180910390a260006020819055600d805491613c5983615968565b9190505550505050505050508080613c7090615968565b915050613403565b50505b50565b81546001600160401b038082168352600160401b8204166020830152600160801b81046001600160781b03166040830152600160f81b900460ff16151560608201526001909101546001600160501b038082166080840152600160501b8204811660a0840152600160a01b82041660c0830152600160f01b900461ffff1660e090910152565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152600080600080600080600080600660009054906101000a90046001600160a01b03166001600160a01b031663c31245256040518163ffffffff1660e01b815260040161010060405180830381865afa158015613da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dc99190615a1a565b60408051610100810182526001600160481b03998a168152978916602089015264ffffffffff96871690880152938716606087015261ffff90921660808601529490941660a0840152921660c08201526001600160801b0390911660e08201529998505050505050505050565b6000601e613e4d6064670de0b6b3a7640000615827565b8310613e5c5750610168613ec0565b613e706103e8670de0b6b3a7640000615827565b8310613e7f575061010e613ec0565b613e93612710670de0b6b3a7640000615827565b8310613ea1575060b4613ec0565b613eb6620186a0670de0b6b3a7640000615827565b8310613ec05750605a5b92915050565b60ff86166140c957604051806101000160405280600d546001600160401b03168152602001600d546001600160401b03168152602001866001600160781b0316815260200160011515815260200160006001600160501b0316815260200160006001600160501b03168152602001856001600160501b031681526020018261ffff1681525060126000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160781b0302191690836001600160781b03160217905550606082015181600001601f6101000a81548160ff02191690831515021790555060808201518160010160006101000a8154816001600160501b0302191690836001600160501b0316021790555060a082015181600101600a6101000a8154816001600160501b0302191690836001600160501b0316021790555060c08201518160010160146101000a8154816001600160501b0302191690836001600160501b0316021790555060e082015181600101601e6101000a81548161ffff021916908361ffff1602179055509050506144c1565b60001960ff8716016142d057604051806101000160405280600d546001600160401b03168152602001600d546001600160401b03168152602001866001600160781b0316815260200160011515815260200160006001600160501b0316815260200160006001600160501b03168152602001856001600160501b031681526020018261ffff1681525060186000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160781b0302191690836001600160781b03160217905550606082015181600001601f6101000a81548160ff02191690831515021790555060808201518160010160006101000a8154816001600160501b0302191690836001600160501b0316021790555060a082015181600101600a6101000a8154816001600160501b0302191690836001600160501b0316021790555060c08201518160010160146101000a8154816001600160501b0302191690836001600160501b0316021790555060e082015181600101601e6101000a81548161ffff021916908361ffff1602179055509050506144c1565b60011960ff87160161026757604051806101000160405280600d546001600160401b03168152602001600d546001600160401b03168152602001866001600160781b0316815260200160011515815260200160006001600160501b0316815260200160006001600160501b03168152602001856001600160501b031681526020018261ffff16815250601f600085815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160781b0302191690836001600160781b03160217905550606082015181600001601f6101000a81548160ff02191690831515021790555060808201518160010160006101000a8154816001600160501b0302191690836001600160501b0316021790555060a082015181600101600a6101000a8154816001600160501b0302191690836001600160501b0316021790555060c08201518160010160146101000a8154816001600160501b0302191690836001600160501b0316021790555060e082015181600101601e6101000a81548161ffff021916908361ffff1602179055509050505b505050505050565b60003361144e81858561483e565b805182546020830151604084015160608501511515600160f81b026001600160f81b036001600160781b03909216600160801b02919091166001600160801b036001600160401b03938416600160401b026fffffffffffffffffffffffffffffffff19909516939095169290921792909217929092169190911717825560808101516001909201805460a083015160c084015160e09094015161ffff16600160f01b026001600160f01b036001600160501b03958616600160a01b02166001600160a01b03928616600160501b026001600160a01b03199094169590961694909417919091171692909217179055565b60008080808515614624576000866145e7670de0b6b3a76400008a61583b565b6145f19190615827565b905080614606670de0b6b3a76400008861583b565b6146109190615827565b925061461c8387615951565b91505061462b565b5060009050835b90969095509350505050565b60008161464d6064670de0b6b3a7640000615827565b841061468257670de0b6b3a7640000614667816014615883565b614671908561583b565b61467b9190615827565b9050614724565b6146966103e8670de0b6b3a7640000615827565b84106146b057670de0b6b3a764000061466781600f615883565b6146c4612710670de0b6b3a7640000615827565b84106146de57670de0b6b3a764000061466781600a615883565b6146f3620186a0670de0b6b3a7640000615827565b841061472457670de0b6b3a764000061470d816005615883565b614717908561583b565b6147219190615827565b90505b6114248382615951565b6001600160a01b0382166147845760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a35565b61479060008383613c78565b80600260008282546147a29190615883565b90915550506001600160a01b038216600090815260208190526040812080548392906147cf908490615883565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361482160008383613c78565b5050565b600033614833858285614e89565b612eca858585614f03565b6001600160a01b0383166148a05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a35565b6001600160a01b0382166149015760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a35565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166149c25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a35565b6149ce82600083613c78565b6001600160a01b03821660009081526020819052604090205481811015614a425760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a35565b6001600160a01b0383166000908152602081905260408120838303905560028054849290614a71908490615951565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613c7883600084613c78565b614b306040805161018081019091526000610100820181815261012083018290526101408301829052610160830191909152819081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040805160808101825260008082526020820181905291810182905260608101919091526000806000806000806000896001600160a01b031663a8d5fd656040518163ffffffff1660e01b815260040161016060405180830381865afa158015614b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bc29190615b54565b604080516101008101825298895261ffff97881660208a015260ff96871690890152938616606088015294909116608086015263ffffffff1660a0850152911660c0830152151560e08201529a9950505050505050505050565b60003361144e818585614f03565b60408051600280825260608201835260009283929190602083019080368337019050509050600f60ff1681600081518110614c6757614c67615c3b565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110614c9657614c96615c3b565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0385169063883bdbfd90614cda908590600401615c51565b600060405180830381865afa158015614cf7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052614d1f9190810190615d32565b5090506000614d7b600f60000b83600081518110614d3f57614d3f615c3b565b602002602001015184600181518110614d5a57614d5a615c3b565b6020026020010151614d6c9190615dfd565b614d769190615e4d565b6150e2565b95945050505050565b6000613ec06001600160a01b03831680600160601b6154fa565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600754604051630c28945b60e31b81526004810184905260009182918291829182916001600160a01b031690636144a2d89060240160a060405180830381865afa158015614e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e3f9190615e8b565b6040805160a0810182526001600160481b0396871681529486166020860152929094169183019190915263ffffffff16606082015260ff9091166080820152979650505050505050565b6000614e958484613349565b90506000198114614efd5781811015614ef05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a35565b614efd848484840361483e565b50505050565b6001600160a01b038316614f675760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a35565b6001600160a01b038216614fc95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a35565b614fd4838383613c78565b6001600160a01b0383166000908152602081905260409020548181101561504c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a35565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290615083908490615883565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516150cf91815260200190565b60405180910390a3614efd848484613c78565b60008060008360020b126150f9578260020b615106565b8260020b61510690615ef0565b9050615115620d89e719615f0c565b60020b81111561514b5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610a35565b60008160011660000361516257600160801b615174565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156151b35760806151ae826ffff97272373d413259a46990580e213a61583b565b901c90505b60048216156151dd5760806151d8826ffff2e50f5f656932ef12357cf3c7fdcc61583b565b901c90505b6008821615615207576080615202826fffe5caca7e10e4e61c3624eaa0941cd061583b565b901c90505b601082161561523157608061522c826fffcb9843d60f6159c9db58835c92664461583b565b901c90505b602082161561525b576080615256826fff973b41fa98c081472e6896dfb254c061583b565b901c90505b6040821615615285576080615280826fff2ea16466c96a3843ec78b326b5286161583b565b901c90505b60808216156152af5760806152aa826ffe5dee046a99a2a811c461f1969c305361583b565b901c90505b6101008216156152da5760806152d5826ffcbe86c7900a88aedcffc83b479aa3a461583b565b901c90505b610200821615615305576080615300826ff987a7253ac413176f2b074cf7815e5461583b565b901c90505b61040082161561533057608061532b826ff3392b0822b70005940c7a398e4b70f361583b565b901c90505b61080082161561535b576080615356826fe7159475a2c29b7443b29c7fa6e889d961583b565b901c90505b611000821615615386576080615381826fd097f3bdfd2022b8845ad8f792aa582561583b565b901c90505b6120008216156153b15760806153ac826fa9f746462d870fdf8a65dc1f90e061e561583b565b901c90505b6140008216156153dc5760806153d7826f70d869a156d2a1b890bb3df62baf32f761583b565b901c90505b618000821615615407576080615402826f31be135f97d08fd981231505542fcfa661583b565b901c90505b6201000082161561543357608061542e826f09aa508b5b7a84e1c677de54f3e99bc961583b565b901c90505b6202000082161561545e576080615459826e5d6af8dedb81196699c329225ee60461583b565b901c90505b62040000821615615488576080615483826d2216e584f5fa1ea926041bedfe9861583b565b901c90505b620800008216156154b05760806154ab826b048a170391f7dc42444e8fa261583b565b901c90505b60008460020b13156154cb576154c881600019615827565b90505b6154da64010000000082615f2e565b156154e65760016154e9565b60005b6114249060ff16602083901c615883565b6000808060001985870985870292508281108382030391505080600003615533576000841161552857600080fd5b508290049050610e0c565b80841161553f57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604051806101000160405280600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60006020828403121561560557600080fd5b5035919050565b600060208083528351808285015260005b818110156156395785810183015185820160400152820161561d565b8181111561564b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114613c7b57600080fd5b6000806040838503121561568957600080fd5b823561569481615661565b946020939093013593505050565b6000806000606084860312156156b757600080fd5b83356156c281615661565b925060208401356156d281615661565b929592945050506040919091013590565b6000602082840312156156f557600080fd5b8135610e0c81615661565b6000806040838503121561571357600080fd5b50508035926020909101359150565b6000806040838503121561573557600080fd5b82359150602083013561574781615661565b809150509250929050565b6000806040838503121561576557600080fd5b823561577081615661565b9150602083013561574781615661565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6000602082840312156157c957600080fd5b5051919050565b602080825260119082015270494353413a204c4f572042414c414e434560781b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082615836576158366157fb565b500490565b600081600019048311821515161561585557615855615811565b500290565b6020808252600f908201526e1250d4d04e881513d3c814d3505313608a1b604082015260600190565b6000821982111561589657615896615811565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b805180151581146158cf57600080fd5b919050565b6000602082840312156158e657600080fd5b610e0c826158bf565b600181811c9082168061590357607f821691505b60208210810361592357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600e908201526d494353413a204e4f205354414b4560901b604082015260600190565b60008282101561596357615963615811565b500390565b60006001820161597a5761597a615811565b5060010190565b60006020828403121561599357600080fd5b8151610e0c81615661565b600064ffffffffff808416806159b6576159b66157fb565b92169190910492915050565b60006001600160481b03808416806159b6576159b66157fb565b80516001600160481b03811681146158cf57600080fd5b805164ffffffffff811681146158cf57600080fd5b805161ffff811681146158cf57600080fd5b600080600080600080600080610100898b031215615a3757600080fd5b615a40896159dc565b9750615a4e60208a016159dc565b9650615a5c60408a016159f3565b9550615a6a60608a016159dc565b9450615a7860808a01615a08565b9350615a8660a08a016159dc565b9250615a9460c08a016159f3565b915060e08901516001600160801b0381168114615ab057600080fd5b809150509295985092959890939650565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715615af957615af9615ac1565b60405290565b604051601f8201601f191681016001600160401b0381118282101715615b2757615b27615ac1565b604052919050565b805160ff811681146158cf57600080fd5b805163ffffffff811681146158cf57600080fd5b600080600080600080600080888a03610160811215615b7257600080fd5b6080811215615b8057600080fd5b50615b89615ad7565b615b928a6159f3565b8152615ba060208b016159dc565b6020820152615bb160408b01615a08565b6040820152615bc260608b01615a08565b60608201529750615bd560808a01615a08565b9650615be360a08a01615b2f565b9550615bf160c08a01615a08565b9450615bff60e08a01615a08565b9350615c0e6101008a01615b40565b9250615c1d6101208a01615b2f565b9150615c2c6101408a016158bf565b90509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015615c8f57835163ffffffff1683529284019291840191600101615c6d565b50909695505050505050565b60006001600160401b03821115615cb457615cb4615ac1565b5060051b60200190565b600082601f830112615ccf57600080fd5b81516020615ce4615cdf83615c9b565b615aff565b82815260059290921b84018101918181019086841115615d0357600080fd5b8286015b84811015615d27578051615d1a81615661565b8352918301918301615d07565b509695505050505050565b60008060408385031215615d4557600080fd5b82516001600160401b0380821115615d5c57600080fd5b818501915085601f830112615d7057600080fd5b81516020615d80615cdf83615c9b565b82815260059290921b84018101918181019089841115615d9f57600080fd5b948201945b83861015615dcd5785518060060b8114615dbe5760008081fd5b82529482019490820190615da4565b91880151919650909350505080821115615de657600080fd5b50615df385828601615cbe565b9150509250929050565b60008160060b8360060b6000811281667fffffffffffff1901831281151615615e2857615e28615811565b81667fffffffffffff018313811615615e4357615e43615811565b5090039392505050565b60008160060b8360060b80615e6457615e646157fb565b667fffffffffffff19821460001982141615615e8257615e82615811565b90059392505050565b600080600080600060a08688031215615ea357600080fd5b615eac866159dc565b9450615eba602087016159dc565b9350615ec8604087016159dc565b9250615ed660608701615b40565b9150615ee460808701615b2f565b90509295509295909350565b6000600160ff1b8201615f0557615f05615811565b5060000390565b60008160020b627fffff198103615f2557615f25615811565b60000392915050565b600082615f3d57615f3d6157fb565b50069056fea2646970667358221220771a7db1885490d9697e1433c114b1222b41518751d407e9a84567b36c06247b64736f6c634300080f003360806040523480156200001157600080fd5b506040518060400160405280601181526020017057652041726520416c6c2074686520534160781b8152506040518060400160405280600681526020016557414154534160d01b81525081600090816200006c91906200013b565b5060016200007b82826200013b565b5050600c80546001600160a01b031916331790555062000207565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000c157607f821691505b602082108103620000e257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200013657600081815260208120601f850160051c81016020861015620001115750805b601f850160051c820191505b8181101562000132578281556001016200011d565b5050505b505050565b81516001600160401b0381111562000157576200015762000096565b6200016f81620001688454620000ac565b84620000e8565b602080601f831160018114620001a757600084156200018e5750858301515b600019600386901b1c1916600185901b17855562000132565b600085815260208120601f198616915b82811015620001d857888601518255948401946001909101908401620001b7565b5085821015620001f75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611f6680620002176000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063536e3b69116100b857806395d89b411161007c57806395d89b41146102af578063a22cb465146102b7578063b88d4fde146102ca578063c87b56dd146102dd578063cad96cca146102f0578063e985e9c51461031057600080fd5b8063536e3b69146102495780636352211e1461025c57806366adc1371461026f57806370a08231146102825780638da5cb5b1461029557600080fd5b806323b872dd116100ff57806323b872dd146101cb5780632a55205a146101de5780632f745c591461021057806342842e0e146102235780634f6ccce71461023657600080fd5b806301ffc9a71461013c57806306fdde0314610164578063081812fc14610179578063095ea7b3146101a457806318160ddd146101b9575b600080fd5b61014f61014a36600461195e565b61034c565b60405190151581526020015b60405180910390f35b61016c61039d565b60405161015b91906119d3565b61018c6101873660046119e6565b61042f565b6040516001600160a01b03909116815260200161015b565b6101b76101b2366004611a1b565b610456565b005b6008545b60405190815260200161015b565b6101b76101d9366004611a45565b610570565b6101f16101ec366004611a81565b6105a1565b604080516001600160a01b03909316835260208301919091520161015b565b6101bd61021e366004611a1b565b6106a7565b6101b7610231366004611a45565b61073d565b6101bd6102443660046119e6565b610758565b6101b76102573660046119e6565b6107eb565b61018c61026a3660046119e6565b610844565b6101bd61027d366004611aa3565b6108a4565b6101bd610290366004611aa3565b610922565b73f447be386164dadfb5d1e7622613f289f17024d861018c565b61016c6109a8565b6101b76102c5366004611abe565b6109b7565b6101b76102d8366004611b10565b6109c6565b61016c6102eb3660046119e6565b6109fe565b6103036102fe3660046119e6565b610a65565b60405161015b9190611c44565b61014f61031e366004611c57565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000631a93499b60e11b6001600160e01b031983160161036e57506001919050565b636ad56fd360e11b6001600160e01b031983160161038e57506001919050565b61039782610af4565b92915050565b6060600080546103ac90611c8a565b80601f01602080910402602001604051908101604052809291908181526020018280546103d890611c8a565b80156104255780601f106103fa57610100808354040283529160200191610425565b820191906000526020600020905b81548152906001019060200180831161040857829003601f168201915b5050505050905090565b600061043a82610b19565b506000908152600460205260409020546001600160a01b031690565b600061046182610844565b9050806001600160a01b0316836001600160a01b0316036104d35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806104ef57506104ef813361031e565b6105615760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104ca565b61056b8383610b78565b505050565b61057a3382610be6565b6105965760405162461bcd60e51b81526004016104ca90611cc4565b61056b838383610c65565b6000828152600a60209081526040808320805482518185028101850190935280835284938493929190849084015b8282101561061e57600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b0316818301528252600190920191016105cf565b505050509050600081511115610697578060008151811061064157610641611d12565b6020026020010151600001516127108260008151811061066357610663611d12565b6020026020010151602001516001600160601b0316866106839190611d3e565b61068d9190611d73565b92509250506106a0565b60008092509250505b9250929050565b60006106b283610922565b82106107145760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016104ca565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61056b838383604051806020016040528060008152506109c6565b600061076360085490565b82106107c65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016104ca565b600882815481106107d9576107d9611d12565b90600052602060002001549050919050565b600c546001600160a01b031633146108385760405162461bcd60e51b815260206004820152601060248201526f5741415453413a204e4f54204943534160801b60448201526064016104ca565b61084181610e0c565b50565b6000818152600260205260408120546001600160a01b0316806103975760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016104ca565b600c546000906001600160a01b031633146108f45760405162461bcd60e51b815260206004820152601060248201526f5741415453413a204e4f54204943534160801b60448201526064016104ca565b610902600b80546001019055565b600061090d600b5490565b905061091881610eb3565b6103978382610f77565b60006001600160a01b03821661098c5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104ca565b506001600160a01b031660009081526003602052604090205490565b6060600180546103ac90611c8a565b6109c23383836110c5565b5050565b6109d03383610be6565b6109ec5760405162461bcd60e51b81526004016104ca90611cc4565b6109f884848484611193565b50505050565b6060610a0982610b19565b6000610a136111c6565b90506000815111610a335760405180602001604052806000815250610a5e565b80610a3d8461124d565b604051602001610a4e929190611d87565b6040516020818303038152906040525b9392505050565b6060600a6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610ae957600084815260209081902060408051808201909152908401546001600160a01b0381168252600160a01b90046001600160601b031681830152825260019092019101610a9a565b505050509050919050565b60006001600160e01b0319821663780e9d6360e01b148061039757506103978261134e565b6000818152600260205260409020546001600160a01b03166108415760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016104ca565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610bad82610844565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610bf283610844565b9050806001600160a01b0316846001600160a01b03161480610c3957506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80610c5d5750836001600160a01b0316610c528461042f565b6001600160a01b0316145b949350505050565b826001600160a01b0316610c7882610844565b6001600160a01b031614610cdc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016104ca565b6001600160a01b038216610d3e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104ca565b610d4983838361139e565b610d54600082610b78565b6001600160a01b0383166000908152600360205260408120805460019290610d7d908490611db6565b90915550506001600160a01b0382166000908152600360205260408120805460019290610dab908490611dcd565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610e1782610844565b9050610e258160008461139e565b610e30600083610b78565b6001600160a01b0381166000908152600360205260408120805460019290610e59908490611db6565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610eca57905050905061017181600081518110610f0957610f09611d12565b6020026020010151602001906001600160601b031690816001600160601b03168152505073f447be386164dadfb5d1e7622613f289f17024d881600081518110610f5557610f55611d12565b60209081029190910101516001600160a01b0390911690526109c282826113a9565b6001600160a01b038216610fcd5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104ca565b6000818152600260205260409020546001600160a01b0316156110325760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104ca565b61103e6000838361139e565b6001600160a01b0382166000908152600360205260408120805460019290611067908490611dcd565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b816001600160a01b0316836001600160a01b0316036111265760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104ca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61119e848484610c65565b6111aa848484846115c2565b6109f85760405162461bcd60e51b81526004016104ca90611de5565b606060006111d34661124d565b90506040518060400160405280601681526020017568747470733a2f2f6170692e69636f73612e70726f2f60501b81525081604051806040016040528060088152602001672f7761617473612f60c01b81525060405160200161123893929190611e37565b60405160208183030381529060405291505090565b6060816000036112745750506040805180820190915260018152600360fc1b602082015290565b8160005b811561129e578061128881611e7a565b91506112979050600a83611d73565b9150611278565b60008167ffffffffffffffff8111156112b9576112b9611afa565b6040519080825280601f01601f1916602001820160405280156112e3576020820181803683370190505b5090505b8415610c5d576112f8600183611db6565b9150611305600a86611e93565b611310906030611dcd565b60f81b81838151811061132557611325611d12565b60200101906001600160f81b031916908160001a905350611347600a86611d73565b94506112e7565b60006001600160e01b031982166380ac58cd60e01b148061137f57506001600160e01b03198216635b5e139f60e01b145b8061039757506301ffc9a760e01b6001600160e01b0319831614610397565b61056b8383836116c3565b6000805b82518110156115585760006001600160a01b03168382815181106113d3576113d3611d12565b6020026020010151600001516001600160a01b0316036114355760405162461bcd60e51b815260206004820152601b60248201527f526563697069656e742073686f756c642062652070726573656e74000000000060448201526064016104ca565b82818151811061144757611447611d12565b6020026020010151602001516001600160601b03166000036114ab5760405162461bcd60e51b815260206004820181905260248201527f526f79616c74792076616c75652073686f756c6420626520706f73697469766560448201526064016104ca565b8281815181106114bd576114bd611d12565b6020026020010151602001516001600160601b0316826114dd9190611dcd565b9150600a600085815260200190815260200160002083828151811061150457611504611d12565b6020908102919091018101518254600181018455600093845292829020815191909201516001600160601b0316600160a01b026001600160a01b03909116179101558061155081611e7a565b9150506113ad565b5061271081106115b85760405162461bcd60e51b815260206004820152602560248201527f526f79616c747920746f74616c2076616c75652073686f756c64206265203c20604482015264031303030360dc1b60648201526084016104ca565b61056b838361177b565b60006001600160a01b0384163b156116b857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611606903390899088908890600401611ea7565b6020604051808303816000875af1925050508015611641575060408051601f3d908101601f1916820190925261163e91810190611ee4565b60015b61169e573d80801561166f576040519150601f19603f3d011682016040523d82523d6000602084013e611674565b606091505b5080516000036116965760405162461bcd60e51b81526004016104ca90611de5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610c5d565b506001949350505050565b6001600160a01b03831661171e5761171981600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611741565b816001600160a01b0316836001600160a01b0316146117415761174183826117b8565b6001600160a01b0382166117585761056b81611855565b826001600160a01b0316826001600160a01b03161461056b5761056b8282611904565b7f3fa96d7b6bcbfe71ef171666d84db3cf52fa2d1c8afdb1cc8e486177f208b7df82826040516117ac929190611f01565b60405180910390a15050565b600060016117c584610922565b6117cf9190611db6565b600083815260076020526040902054909150808214611822576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061186790600190611db6565b6000838152600960205260408120546008805493945090928490811061188f5761188f611d12565b9060005260206000200154905080600883815481106118b0576118b0611d12565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806118e8576118e8611f1a565b6001900381819060005260206000200160009055905550505050565b600061190f83610922565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160e01b03198116811461084157600080fd5b60006020828403121561197057600080fd5b8135610a5e81611948565b60005b8381101561199657818101518382015260200161197e565b838111156109f85750506000910152565b600081518084526119bf81602086016020860161197b565b601f01601f19169290920160200192915050565b602081526000610a5e60208301846119a7565b6000602082840312156119f857600080fd5b5035919050565b80356001600160a01b0381168114611a1657600080fd5b919050565b60008060408385031215611a2e57600080fd5b611a37836119ff565b946020939093013593505050565b600080600060608486031215611a5a57600080fd5b611a63846119ff565b9250611a71602085016119ff565b9150604084013590509250925092565b60008060408385031215611a9457600080fd5b50508035926020909101359150565b600060208284031215611ab557600080fd5b610a5e826119ff565b60008060408385031215611ad157600080fd5b611ada836119ff565b915060208301358015158114611aef57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611b2657600080fd5b611b2f856119ff565b9350611b3d602086016119ff565b925060408501359150606085013567ffffffffffffffff80821115611b6157600080fd5b818701915087601f830112611b7557600080fd5b813581811115611b8757611b87611afa565b604051601f8201601f19908116603f01168101908382118183101715611baf57611baf611afa565b816040528281528a6020848701011115611bc857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600081518084526020808501945080840160005b83811015611c3957815180516001600160a01b031688528301516001600160601b03168388015260409096019590820190600101611c00565b509495945050505050565b602081526000610a5e6020830184611bec565b60008060408385031215611c6a57600080fd5b611c73836119ff565b9150611c81602084016119ff565b90509250929050565b600181811c90821680611c9e57607f821691505b602082108103611cbe57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611d5857611d58611d28565b500290565b634e487b7160e01b600052601260045260246000fd5b600082611d8257611d82611d5d565b500490565b60008351611d9981846020880161197b565b835190830190611dad81836020880161197b565b01949350505050565b600082821015611dc857611dc8611d28565b500390565b60008219821115611de057611de0611d28565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008451611e4981846020890161197b565b845190830190611e5d81836020890161197b565b8451910190611e7081836020880161197b565b0195945050505050565b600060018201611e8c57611e8c611d28565b5060010190565b600082611ea257611ea2611d5d565b500690565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611eda908301846119a7565b9695505050505050565b600060208284031215611ef657600080fd5b8151610a5e81611948565b828152604060208201526000610c5d6040830184611bec565b634e487b7160e01b600052603160045260246000fdfea26469706673582212206fae9180e5bc3b2fe969c2964f1e17e80de1e312a7226fdda5ba630a8a9e27fc64736f6c634300080f0033