0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063b04b2fd71161005b578063b04b2fd71461011e578063bb85e1741461013e578063f0b5e1df14610166578063f40084b71461017957600080fd5b8063163d4bfb1461008d5780634162169f146100a25780634c93a299146100d257806372746eaf1461010b575b600080fd5b6100a061009b366004610e0d565b6101bd565b005b6000546100b5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fd6100e0366004610edf565b600260209081526000928352604080842090915290825290205481565b6040519081526020016100c9565b6100a0610119366004610edf565b610547565b61013161012c366004610e0d565b610623565b6040516100c99190610f09565b61015161014c366004610edf565b610759565b604080519283526020830191909152016100c9565b6100a0610174366004610f4d565b6107ea565b6101ad610187366004610f89565b600360209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016100c9565b60005b8251811015610541576001600160a01b038416600090815260036020526040812084519091908590849081106101f8576101f8610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600083838151811061023457610234610fc5565b60209081029190910181015182528101919091526040016000205460ff16156102a45760405162461bcd60e51b815260206004820152601760248201527f52657761726420616c726561647920636c61696d65642e00000000000000000060448201526064015b60405180910390fd5b438282815181106102b7576102b7610fc5565b602002602001015162034bc06102cd9190610ff1565b1061031a5760405162461bcd60e51b815260206004820152601b60248201527f546f6f206561726c7920746f20636c61696d20726577617264732e0000000000604482015260640161029b565b6001600160a01b038416600090815260036020526040812084516001929086908590811061034a5761034a610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084848151811061038657610386610fc5565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600260008584815181106103cb576103cb610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084848151811061040757610407610fc5565b602002602001015181526020019081526020016000205490506000806104468786868151811061043957610439610fc5565b6020026020010151610759565b9092509050600081610458848661100a565b6104629190611021565b9050801561052a576104a1888289888151811061048157610481610fc5565b60200260200101516001600160a01b0316610a169092919063ffffffff16565b876001600160a01b03167fd3208fd5300db64b97bc442f47ade72b7ebcd9272aaecdcc04c777bb762861b98887815181106104de576104de610fc5565b60200260200101518888815181106104f8576104f8610fc5565b602090810291909101810151604080516001600160a01b03909416845291830152810184905260600160405180910390a25b50505050808061053990611043565b9150506101c0565b50505050565b6001600160a01b0382166000908152600260209081526040808320438452909152902054156105a65760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b604482015260640161029b565b6105bb6001600160a01b038316333084610a7e565b6001600160a01b0382166000818152600260209081526040808320438085529083529281902085905580519384529083018490528201527f9e725a59e293b3a40cf2ae1148796b9ab47f79644276301835a4ee7bf4d807349060600160405180910390a15050565b6060825167ffffffffffffffff81111561063f5761063f610d37565b604051908082528060200260200182016040528015610668578160200160208202803683370190505b50905060005b83518110156107515760006002600086848151811061068f5761068f610fc5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008584815181106106cb576106cb610fc5565b602002602001015181526020019081526020016000205490506000806106fd8887868151811061043957610439610fc5565b909250905060008161070f848661100a565b6107199190611021565b90508086868151811061072e5761072e610fc5565b60200260200101818152505050505050808061074990611043565b91505061066e565b509392505050565b600154604051630748d63560e31b81526001600160a01b038481166004830152602482018490526000928392911690633a46b1a890604401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d2919061105c565b946d2bd35ae79a49ed3975a215e00000945092505050565b6000546001600160a01b031633146108445760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792044414f206d61792063616c6c20746869732066756e6374696f6e2e604482015260640161029b565b6001600160a01b03831660009081526002602090815260408083208584529091529020546108b45760405162461bcd60e51b815260206004820152601960248201527f496e636f7272656374206c61756e63682064657461696c732e00000000000000604482015260640161029b565b6108c1826209e340610ff1565b4310156109105760405162461bcd60e51b815260206004820152601a60248201527f546f6f206561726c7920746f2077697468647261772066656573000000000000604482015260640161029b565b6001600160a01b038316600081815260026020908152604080832086845290915280822091909155516370a0823160e01b815230600482015284919063a9059cbb90849083906370a0823190602401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a0919061105c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190611075565b5050505050565b6040516001600160a01b038316602482015260448101829052610a7990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ab6565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526105419085906323b872dd60e01b90608401610a42565b6000610b0b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b8b9092919063ffffffff16565b9050805160001480610b2c575080806020019051810190610b2c9190611075565b610a795760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161029b565b6060610b9a8484600085610ba2565b949350505050565b606082471015610c035760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161029b565b600080866001600160a01b03168587604051610c1f91906110c2565b60006040518083038185875af1925050503d8060008114610c5c576040519150601f19603f3d011682016040523d82523d6000602084013e610c61565b606091505b5091509150610c7287838387610c7d565b979650505050505050565b60608315610cec578251600003610ce5576001600160a01b0385163b610ce55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161029b565b5081610b9a565b610b9a8383815115610d015781518083602001fd5b8060405162461bcd60e51b815260040161029b91906110de565b80356001600160a01b0381168114610d3257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d7657610d76610d37565b604052919050565b600067ffffffffffffffff821115610d9857610d98610d37565b5060051b60200190565b600082601f830112610db357600080fd5b81356020610dc8610dc383610d7e565b610d4d565b82815260059290921b84018101918181019086841115610de757600080fd5b8286015b84811015610e025780358352918301918301610deb565b509695505050505050565b600080600060608486031215610e2257600080fd5b610e2b84610d1b565b925060208085013567ffffffffffffffff80821115610e4957600080fd5b818701915087601f830112610e5d57600080fd5b8135610e6b610dc382610d7e565b81815260059190911b8301840190848101908a831115610e8a57600080fd5b938501935b82851015610eaf57610ea085610d1b565b82529385019390850190610e8f565b965050506040870135925080831115610ec757600080fd5b5050610ed586828701610da2565b9150509250925092565b60008060408385031215610ef257600080fd5b610efb83610d1b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015610f4157835183529284019291840191600101610f25565b50909695505050505050565b600080600060608486031215610f6257600080fd5b610f6b84610d1b565b925060208401359150610f8060408501610d1b565b90509250925092565b600080600060608486031215610f9e57600080fd5b610fa784610d1b565b9250610fb560208501610d1b565b9150604084013590509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561100457611004610fdb565b92915050565b808202811582820484141761100457611004610fdb565b60008261103e57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161105557611055610fdb565b5060010190565b60006020828403121561106e57600080fd5b5051919050565b60006020828403121561108757600080fd5b8151801515811461109757600080fd5b9392505050565b60005b838110156110b95781810151838201526020016110a1565b50506000910152565b600082516110d481846020870161109e565b9190910192915050565b60208152600082518060208401526110fd81604085016020870161109e565b601f01601f1916919091016040019291505056fea164736f6c6343000811000a
0x608060405234801561001057600080fd5b506040516111dc3803806111dc83398101604081905261002f9161007c565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100af565b80516001600160a01b038116811461007757600080fd5b919050565b6000806040838503121561008f57600080fd5b61009883610060565b91506100a660208401610060565b90509250929050565b61111e806100be6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b04b2fd71161005b578063b04b2fd71461011e578063bb85e1741461013e578063f0b5e1df14610166578063f40084b71461017957600080fd5b8063163d4bfb1461008d5780634162169f146100a25780634c93a299146100d257806372746eaf1461010b575b600080fd5b6100a061009b366004610e0d565b6101bd565b005b6000546100b5906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fd6100e0366004610edf565b600260209081526000928352604080842090915290825290205481565b6040519081526020016100c9565b6100a0610119366004610edf565b610547565b61013161012c366004610e0d565b610623565b6040516100c99190610f09565b61015161014c366004610edf565b610759565b604080519283526020830191909152016100c9565b6100a0610174366004610f4d565b6107ea565b6101ad610187366004610f89565b600360209081526000938452604080852082529284528284209052825290205460ff1681565b60405190151581526020016100c9565b60005b8251811015610541576001600160a01b038416600090815260036020526040812084519091908590849081106101f8576101f8610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600083838151811061023457610234610fc5565b60209081029190910181015182528101919091526040016000205460ff16156102a45760405162461bcd60e51b815260206004820152601760248201527f52657761726420616c726561647920636c61696d65642e00000000000000000060448201526064015b60405180910390fd5b438282815181106102b7576102b7610fc5565b602002602001015162034bc06102cd9190610ff1565b1061031a5760405162461bcd60e51b815260206004820152601b60248201527f546f6f206561726c7920746f20636c61696d20726577617264732e0000000000604482015260640161029b565b6001600160a01b038416600090815260036020526040812084516001929086908590811061034a5761034a610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084848151811061038657610386610fc5565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600260008584815181106103cb576103cb610fc5565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600084848151811061040757610407610fc5565b602002602001015181526020019081526020016000205490506000806104468786868151811061043957610439610fc5565b6020026020010151610759565b9092509050600081610458848661100a565b6104629190611021565b9050801561052a576104a1888289888151811061048157610481610fc5565b60200260200101516001600160a01b0316610a169092919063ffffffff16565b876001600160a01b03167fd3208fd5300db64b97bc442f47ade72b7ebcd9272aaecdcc04c777bb762861b98887815181106104de576104de610fc5565b60200260200101518888815181106104f8576104f8610fc5565b602090810291909101810151604080516001600160a01b03909416845291830152810184905260600160405180910390a25b50505050808061053990611043565b9150506101c0565b50505050565b6001600160a01b0382166000908152600260209081526040808320438452909152902054156105a65760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b604482015260640161029b565b6105bb6001600160a01b038316333084610a7e565b6001600160a01b0382166000818152600260209081526040808320438085529083529281902085905580519384529083018490528201527f9e725a59e293b3a40cf2ae1148796b9ab47f79644276301835a4ee7bf4d807349060600160405180910390a15050565b6060825167ffffffffffffffff81111561063f5761063f610d37565b604051908082528060200260200182016040528015610668578160200160208202803683370190505b50905060005b83518110156107515760006002600086848151811061068f5761068f610fc5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008584815181106106cb576106cb610fc5565b602002602001015181526020019081526020016000205490506000806106fd8887868151811061043957610439610fc5565b909250905060008161070f848661100a565b6107199190611021565b90508086868151811061072e5761072e610fc5565b60200260200101818152505050505050808061074990611043565b91505061066e565b509392505050565b600154604051630748d63560e31b81526001600160a01b038481166004830152602482018490526000928392911690633a46b1a890604401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d2919061105c565b946d2bd35ae79a49ed3975a215e00000945092505050565b6000546001600160a01b031633146108445760405162461bcd60e51b815260206004820181905260248201527f4f6e6c792044414f206d61792063616c6c20746869732066756e6374696f6e2e604482015260640161029b565b6001600160a01b03831660009081526002602090815260408083208584529091529020546108b45760405162461bcd60e51b815260206004820152601960248201527f496e636f7272656374206c61756e63682064657461696c732e00000000000000604482015260640161029b565b6108c1826209e340610ff1565b4310156109105760405162461bcd60e51b815260206004820152601a60248201527f546f6f206561726c7920746f2077697468647261772066656573000000000000604482015260640161029b565b6001600160a01b038316600081815260026020908152604080832086845290915280822091909155516370a0823160e01b815230600482015284919063a9059cbb90849083906370a0823190602401602060405180830381865afa15801561097c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a0919061105c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156109eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0f9190611075565b5050505050565b6040516001600160a01b038316602482015260448101829052610a7990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ab6565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526105419085906323b872dd60e01b90608401610a42565b6000610b0b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b8b9092919063ffffffff16565b9050805160001480610b2c575080806020019051810190610b2c9190611075565b610a795760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161029b565b6060610b9a8484600085610ba2565b949350505050565b606082471015610c035760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161029b565b600080866001600160a01b03168587604051610c1f91906110c2565b60006040518083038185875af1925050503d8060008114610c5c576040519150601f19603f3d011682016040523d82523d6000602084013e610c61565b606091505b5091509150610c7287838387610c7d565b979650505050505050565b60608315610cec578251600003610ce5576001600160a01b0385163b610ce55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161029b565b5081610b9a565b610b9a8383815115610d015781518083602001fd5b8060405162461bcd60e51b815260040161029b91906110de565b80356001600160a01b0381168114610d3257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610d7657610d76610d37565b604052919050565b600067ffffffffffffffff821115610d9857610d98610d37565b5060051b60200190565b600082601f830112610db357600080fd5b81356020610dc8610dc383610d7e565b610d4d565b82815260059290921b84018101918181019086841115610de757600080fd5b8286015b84811015610e025780358352918301918301610deb565b509695505050505050565b600080600060608486031215610e2257600080fd5b610e2b84610d1b565b925060208085013567ffffffffffffffff80821115610e4957600080fd5b818701915087601f830112610e5d57600080fd5b8135610e6b610dc382610d7e565b81815260059190911b8301840190848101908a831115610e8a57600080fd5b938501935b82851015610eaf57610ea085610d1b565b82529385019390850190610e8f565b965050506040870135925080831115610ec757600080fd5b5050610ed586828701610da2565b9150509250925092565b60008060408385031215610ef257600080fd5b610efb83610d1b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015610f4157835183529284019291840191600101610f25565b50909695505050505050565b600080600060608486031215610f6257600080fd5b610f6b84610d1b565b925060208401359150610f8060408501610d1b565b90509250925092565b600080600060608486031215610f9e57600080fd5b610fa784610d1b565b9250610fb560208501610d1b565b9150604084013590509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561100457611004610fdb565b92915050565b808202811582820484141761100457611004610fdb565b60008261103e57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161105557611055610fdb565b5060010190565b60006020828403121561106e57600080fd5b5051919050565b60006020828403121561108757600080fd5b8151801515811461109757600080fd5b9392505050565b60005b838110156110b95781810151838201526020016110a1565b50506000910152565b600082516110d481846020870161109e565b9190910192915050565b60208152600082518060208401526110fd81604085016020870161109e565b601f01601f1916919091016040019291505056fea164736f6c6343000811000a00000000000000000000000025d9ded9cd633f3a8564900e610cd3efbe047ab90000000000000000000000003486b751a36f731a1bebff779374bad635864919