0x608060405234801561001057600080fd5b5061149d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806361d027b314610046578063ce5494bb1461007d578063e486033914610090575b600080fd5b61006173562017590f351a8c6ef5a0221aa7eaea33acc18681565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046105f9565b6100b9565b61006161009e3660046105f9565b6000602081905290815260409020546001600160a01b031681565b6040516370a0823160e01b815233600482015260009081906001600160a01b038416906370a0823190602401602060405180830381865afa158015610102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101269190610616565b90506101516001600160a01b0384163373562017590f351a8c6ef5a0221aa7eaea33acc186846102dd565b600060405161015f906105d4565b604051809103906000f08015801561017b573d6000803e3d6000fd5b506040516340c10f1960e01b8152336004820152602481018490529091506001600160a01b038216906340c10f1990604401600060405180830381600087803b1580156101c757600080fd5b505af11580156101db573d6000803e3d6000fd5b505050506001600160a01b038481166000818152602081905260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169385169390931790925590516370a0823160e01b81523360048201526370a0823190602401602060405180830381865afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610616565b156102d65760405162461bcd60e51b815260206004820152600760248201527f696e76616c69640000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17905261034c908590610352565b50505050565b60006103a7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661043c9092919063ffffffff16565b80519091501561043757808060200190518101906103c5919061062f565b6104375760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102cd565b505050565b606061044b8484600085610453565b949350505050565b6060824710156104cb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102cd565b6001600160a01b0385163b6105225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102cd565b600080866001600160a01b0316858760405161053e919061067d565b60006040518083038185875af1925050503d806000811461057b576040519150601f19603f3d011682016040523d82523d6000602084013e610580565b606091505b509150915061059082828661059b565b979650505050505050565b606083156105aa5750816102d6565b8251156105ba5782518084602001fd5b8160405162461bcd60e51b81526004016102cd9190610699565b610dc4806106cd83390190565b6001600160a01b03811681146105f657600080fd5b50565b60006020828403121561060b57600080fd5b81356102d6816105e1565b60006020828403121561062857600080fd5b5051919050565b60006020828403121561064157600080fd5b815180151581146102d657600080fd5b60005b8381101561066c578181015183820152602001610654565b8381111561034c5750506000910152565b6000825161068f818460208701610651565b9190910192915050565b60208152600082518060208401526106b8816040850160208701610651565b601f01601f1916919091016040019291505056fe60806040523480156200001157600080fd5b506040518060400160405280600381526020016215151560ea1b8152506040518060400160405280600381526020016215151560ea1b815250816003908051906020019062000062929190620000f1565b50805162000078906004906020840190620000f1565b505050620000956200008f6200009b60201b60201c565b6200009f565b620001d4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ff9062000197565b90600052602060002090601f0160209004810192826200012357600085556200016e565b82601f106200013e57805160ff19168380011785556200016e565b828001600101855582156200016e579182015b828111156200016e57825182559160200191906001019062000151565b506200017c92915062000180565b5090565b5b808211156200017c576000815560010162000181565b600181811c90821680620001ac57607f821691505b60208210811415620001ce57634e487b7160e01b600052602260045260246000fd5b50919050565b610be080620001e46000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101eb578063a9059cbb146101fe578063dd62ed3e14610211578063f2fde38b1461024a57600080fd5b806370a0823114610197578063715018a6146101c05780638da5cb5b146101c857806395d89b41146101e357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261025d565b60405161010f9190610a46565b60405180910390f35b61012b610126366004610ab7565b6102ef565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610ae1565b610307565b6040516012815260200161010f565b61012b61017d366004610ab7565b61032b565b610195610190366004610ab7565b61036a565b005b61013f6101a5366004610b1d565b6001600160a01b031660009081526020819052604090205490565b610195610380565b6005546040516001600160a01b03909116815260200161010f565b610102610394565b61012b6101f9366004610ab7565b6103a3565b61012b61020c366004610ab7565b610452565b61013f61021f366004610b3f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610195610258366004610b1d565b610460565b60606003805461026c90610b72565b80601f016020809104026020016040519081016040528092919081815260200182805461029890610b72565b80156102e55780601f106102ba576101008083540402835291602001916102e5565b820191906000526020600020905b8154815290600101906020018083116102c857829003601f168201915b5050505050905090565b6000336102fd8185856104f0565b5060019392505050565b600033610315858285610614565b6103208585856106a6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102fd9082908690610365908790610bad565b6104f0565b6103726108a3565b61037c82826108fd565b5050565b6103886108a3565b61039260006109dc565b565b60606004805461026c90610b72565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104455760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61032082868684036104f0565b6000336102fd8185856106a6565b6104686108a3565b6001600160a01b0381166104e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043c565b6104ed816109dc565b50565b6001600160a01b0383166105525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043c565b6001600160a01b0382166105b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146106a057818110156106935760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161043c565b6106a084848484036104f0565b50505050565b6001600160a01b0383166107225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161043c565b6001600160a01b0382166107845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043c565b6001600160a01b038316600090815260208190526040902054818110156108135760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161043c565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061084a908490610bad565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161089691815260200190565b60405180910390a36106a0565b6005546001600160a01b031633146103925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043c565b6001600160a01b0382166109535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161043c565b80600260008282546109659190610bad565b90915550506001600160a01b03821660009081526020819052604081208054839290610992908490610bad565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610a7357858101830151858201604001528201610a57565b81811115610a85576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610ab257600080fd5b919050565b60008060408385031215610aca57600080fd5b610ad383610a9b565b946020939093013593505050565b600080600060608486031215610af657600080fd5b610aff84610a9b565b9250610b0d60208501610a9b565b9150604084013590509250925092565b600060208284031215610b2f57600080fd5b610b3882610a9b565b9392505050565b60008060408385031215610b5257600080fd5b610b5b83610a9b565b9150610b6960208401610a9b565b90509250929050565b600181811c90821680610b8657607f821691505b60208210811415610ba757634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610bce57634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c634300080c000aa164736f6c634300080c000a
0x608060405234801561001057600080fd5b50600436106100415760003560e01c806361d027b314610046578063ce5494bb1461007d578063e486033914610090575b600080fd5b61006173562017590f351a8c6ef5a0221aa7eaea33acc18681565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b3660046105f9565b6100b9565b61006161009e3660046105f9565b6000602081905290815260409020546001600160a01b031681565b6040516370a0823160e01b815233600482015260009081906001600160a01b038416906370a0823190602401602060405180830381865afa158015610102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101269190610616565b90506101516001600160a01b0384163373562017590f351a8c6ef5a0221aa7eaea33acc186846102dd565b600060405161015f906105d4565b604051809103906000f08015801561017b573d6000803e3d6000fd5b506040516340c10f1960e01b8152336004820152602481018490529091506001600160a01b038216906340c10f1990604401600060405180830381600087803b1580156101c757600080fd5b505af11580156101db573d6000803e3d6000fd5b505050506001600160a01b038481166000818152602081905260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169385169390931790925590516370a0823160e01b81523360048201526370a0823190602401602060405180830381865afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610616565b156102d65760405162461bcd60e51b815260206004820152600760248201527f696e76616c69640000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b9392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b17905261034c908590610352565b50505050565b60006103a7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661043c9092919063ffffffff16565b80519091501561043757808060200190518101906103c5919061062f565b6104375760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102cd565b505050565b606061044b8484600085610453565b949350505050565b6060824710156104cb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102cd565b6001600160a01b0385163b6105225760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102cd565b600080866001600160a01b0316858760405161053e919061067d565b60006040518083038185875af1925050503d806000811461057b576040519150601f19603f3d011682016040523d82523d6000602084013e610580565b606091505b509150915061059082828661059b565b979650505050505050565b606083156105aa5750816102d6565b8251156105ba5782518084602001fd5b8160405162461bcd60e51b81526004016102cd9190610699565b610dc4806106cd83390190565b6001600160a01b03811681146105f657600080fd5b50565b60006020828403121561060b57600080fd5b81356102d6816105e1565b60006020828403121561062857600080fd5b5051919050565b60006020828403121561064157600080fd5b815180151581146102d657600080fd5b60005b8381101561066c578181015183820152602001610654565b8381111561034c5750506000910152565b6000825161068f818460208701610651565b9190910192915050565b60208152600082518060208401526106b8816040850160208701610651565b601f01601f1916919091016040019291505056fe60806040523480156200001157600080fd5b506040518060400160405280600381526020016215151560ea1b8152506040518060400160405280600381526020016215151560ea1b815250816003908051906020019062000062929190620000f1565b50805162000078906004906020840190620000f1565b505050620000956200008f6200009b60201b60201c565b6200009f565b620001d4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ff9062000197565b90600052602060002090601f0160209004810192826200012357600085556200016e565b82601f106200013e57805160ff19168380011785556200016e565b828001600101855582156200016e579182015b828111156200016e57825182559160200191906001019062000151565b506200017c92915062000180565b5090565b5b808211156200017c576000815560010162000181565b600181811c90821680620001ac57607f821691505b60208210811415620001ce57634e487b7160e01b600052602260045260246000fd5b50919050565b610be080620001e46000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d7146101eb578063a9059cbb146101fe578063dd62ed3e14610211578063f2fde38b1461024a57600080fd5b806370a0823114610197578063715018a6146101c05780638da5cb5b146101c857806395d89b41146101e357600080fd5b806323b872dd116100d357806323b872dd1461014d578063313ce56714610160578063395093511461016f57806340c10f191461018257600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261025d565b60405161010f9190610a46565b60405180910390f35b61012b610126366004610ab7565b6102ef565b604051901515815260200161010f565b6002545b60405190815260200161010f565b61012b61015b366004610ae1565b610307565b6040516012815260200161010f565b61012b61017d366004610ab7565b61032b565b610195610190366004610ab7565b61036a565b005b61013f6101a5366004610b1d565b6001600160a01b031660009081526020819052604090205490565b610195610380565b6005546040516001600160a01b03909116815260200161010f565b610102610394565b61012b6101f9366004610ab7565b6103a3565b61012b61020c366004610ab7565b610452565b61013f61021f366004610b3f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610195610258366004610b1d565b610460565b60606003805461026c90610b72565b80601f016020809104026020016040519081016040528092919081815260200182805461029890610b72565b80156102e55780601f106102ba576101008083540402835291602001916102e5565b820191906000526020600020905b8154815290600101906020018083116102c857829003601f168201915b5050505050905090565b6000336102fd8185856104f0565b5060019392505050565b600033610315858285610614565b6103208585856106a6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102fd9082908690610365908790610bad565b6104f0565b6103726108a3565b61037c82826108fd565b5050565b6103886108a3565b61039260006109dc565b565b60606004805461026c90610b72565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156104455760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61032082868684036104f0565b6000336102fd8185856106a6565b6104686108a3565b6001600160a01b0381166104e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161043c565b6104ed816109dc565b50565b6001600160a01b0383166105525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161043c565b6001600160a01b0382166105b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161043c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146106a057818110156106935760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161043c565b6106a084848484036104f0565b50505050565b6001600160a01b0383166107225760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161043c565b6001600160a01b0382166107845760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161043c565b6001600160a01b038316600090815260208190526040902054818110156108135760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161043c565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061084a908490610bad565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161089691815260200190565b60405180910390a36106a0565b6005546001600160a01b031633146103925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161043c565b6001600160a01b0382166109535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161043c565b80600260008282546109659190610bad565b90915550506001600160a01b03821660009081526020819052604081208054839290610992908490610bad565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610a7357858101830151858201604001528201610a57565b81811115610a85576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610ab257600080fd5b919050565b60008060408385031215610aca57600080fd5b610ad383610a9b565b946020939093013593505050565b600080600060608486031215610af657600080fd5b610aff84610a9b565b9250610b0d60208501610a9b565b9150604084013590509250925092565b600060208284031215610b2f57600080fd5b610b3882610a9b565b9392505050565b60008060408385031215610b5257600080fd5b610b5b83610a9b565b9150610b6960208401610a9b565b90509250929050565b600181811c90821680610b8657607f821691505b60208210811415610ba757634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610bce57634e487b7160e01b600052601160045260246000fd5b50019056fea164736f6c634300080c000aa164736f6c634300080c000a