0x60806040526004361061011e575f3560e01c80636c0a24eb1161009d57806395d89b411161006257806395d89b4114610129578063a9059cbb1461035b578063c816841b1461037a578063dd62ed3e14610399578063f4293890146103dd575f80fd5b80636c0a24eb146102b857806370a08231146102cd578063715018a6146102f857806382bf293c1461030c578063893d20e81461032b575f80fd5b80632b112e49116100e35780632b112e49146102025780632f54bf6e14610216578063313ce56714610243578063425ecff814610269578063495bb3ea14610297575f80fd5b806306fdde0314610129578063095ea7b31461017257806311704f52146101a157806318160ddd146101c157806323b872dd146101e3575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5061015c6040518060400160405280600881526020016734b6b837b9ba32b960c11b81525081565b6040516101699190610a50565b60405180910390f35b34801561017d575f80fd5b5061019161018c366004610ab6565b6103f1565b6040519015158152602001610169565b3480156101ac575f80fd5b5060055461019190600160a01b900460ff1681565b3480156101cc575f80fd5b506101d561045d565b604051908152602001610169565b3480156101ee575f80fd5b506101916101fd366004610ade565b610477565b34801561020d575f80fd5b506101d5610533565b348015610221575f80fd5b50610191610230366004610b17565b5f546001600160a01b0391821691161490565b34801561024e575f80fd5b50610257601281565b60405160ff9091168152602001610169565b348015610274575f80fd5b50610191610283366004610b17565b60046020525f908152604090205460ff1681565b3480156102a2575f80fd5b506102b66102b1366004610b17565b6105b6565b005b3480156102c3575f80fd5b506101d560015481565b3480156102d8575f80fd5b506101d56102e7366004610b17565b60026020525f908152604090205481565b348015610303575f80fd5b506102b661066b565b348015610317575f80fd5b506102b6610326366004610b30565b6106a5565b348015610336575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610169565b348015610366575f80fd5b50610191610375366004610ab6565b610753565b348015610385575f80fd5b50600554610343906001600160a01b031681565b3480156103a4575f80fd5b506101d56103b3366004610b47565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103e8575f80fd5b506102b6610766565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061044b9086815260200190565b60405180910390a35060015b92915050565b6104696012600a610c6c565b610474906065610c7a565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610520576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546104fc9184906107bb565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b61052b8484846107f3565b949350505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc549091906105926012600a610c6c565b61059d906065610c7a565b6105a79190610c91565b6105b19190610c91565b905090565b5f546001600160a01b031633146105e85760405162461bcd60e51b81526004016105df90610ca4565b60405180910390fd5b600554600160a01b900460ff16156106425760405162461bcd60e51b815260206004820181905260248201527f43616e7420646f2061667465722074726164696e6720686173206f70656e656460448201526064016105df565b600580546001600160a01b039092166001600160a81b031990921691909117600160a01b179055565b5f546001600160a01b031633146106945760405162461bcd60e51b81526004016105df90610ca4565b5f80546001600160a01b0319169055565b5f546001600160a01b031633146106ce5760405162461bcd60e51b81526004016105df90610ca4565b600281101561071f5760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f772032250000000060448201526064016105df565b60648161072e6012600a610c6c565b610739906065610c7a565b6107439190610c7a565b61074d9190610cc4565b60015550565b5f61075f3384846107f3565b9392505050565b5f546001600160a01b0316331461078f5760405162461bcd60e51b81526004016105df90610ca4565b60405133904780156108fc02915f818181858888f193505050501580156107b8573d5f803e3d5ffd5b50565b5f81848411156107de5760405162461bcd60e51b81526004016105df9190610a50565b505f6107ea8486610c91565b95945050505050565b6001600160a01b0383165f9081526004602052604081205460ff1615801561083357506001600160a01b0383165f9081526004602052604090205460ff16155b801561084d57506005546001600160a01b03848116911614155b15610905576001546001600160a01b0384165f90815260026020526040902054610878908490610ce3565b11156108b95760405162461bcd60e51b815260206004820152601060248201526f1b585e081dd85b1b195d081b1a5b5a5d60821b60448201526064016105df565b600554600160a01b900460ff166109055760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105df565b604080518082018252601a81527f496e73756666696369656e7420546f6b656e2042616c616e63650000000000006020808301919091526001600160a01b0387165f9081526002909152919091205461095f9184906107bb565b6001600160a01b038086165f90815260026020526040808220939093559085168152205461098d90836109f2565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109e09086815260200190565b60405180910390a35060019392505050565b5f806109fe8385610ce3565b90508381101561075f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105df565b5f6020808352835180828501525f5b81811015610a7b57858101830151858201604001528201610a5f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ab1575f80fd5b919050565b5f8060408385031215610ac7575f80fd5b610ad083610a9b565b946020939093013593505050565b5f805f60608486031215610af0575f80fd5b610af984610a9b565b9250610b0760208501610a9b565b9150604084013590509250925092565b5f60208284031215610b27575f80fd5b61075f82610a9b565b5f60208284031215610b40575f80fd5b5035919050565b5f8060408385031215610b58575f80fd5b610b6183610a9b565b9150610b6f60208401610a9b565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610bc657815f1904821115610bac57610bac610b78565b80851615610bb957918102915b93841c9390800290610b91565b509250929050565b5f82610bdc57506001610457565b81610be857505f610457565b8160018114610bfe5760028114610c0857610c24565b6001915050610457565b60ff841115610c1957610c19610b78565b50506001821b610457565b5060208310610133831016604e8410600b8410161715610c47575081810a610457565b610c518383610b8c565b805f1904821115610c6457610c64610b78565b029392505050565b5f61075f60ff841683610bce565b808202811582820484141761045757610457610b78565b8181038181111561045757610457610b78565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f82610cde57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561045757610457610b7856fea26469706673582212206670ec2d0eae3ab7b60e6ba78f740157d4e1462aedc0bf492e7f8c3ea4ab9a7164736f6c63430008150033
0x60806040526032620000146012600a62000248565b620000219060656200025f565b6200002d919062000279565b6001556005805460ff60a01b1916905534801562000049575f80fd5b505f80546001600160a01b031916339081178255815260046020526040808220805460ff199081166001908117909255308452918320805483168217905561dead9092527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd80549091169091179055620000c66012600a62000248565b620000d39060656200025f565b335f81815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001156012600a62000248565b620001229060656200025f565b60405190815260200160405180910390a362000299565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200018d57815f190482111562000171576200017162000139565b808516156200017f57918102915b93841c939080029062000152565b509250929050565b5f82620001a55750600162000242565b81620001b357505f62000242565b8160018114620001cc5760028114620001d757620001f7565b600191505062000242565b60ff841115620001eb57620001eb62000139565b50506001821b62000242565b5060208310610133831016604e8410600b84101617156200021c575081810a62000242565b6200022883836200014d565b805f19048211156200023e576200023e62000139565b0290505b92915050565b5f6200025860ff84168362000195565b9392505050565b808202811582820484141762000242576200024262000139565b5f826200029457634e487b7160e01b5f52601260045260245ffd5b500490565b610d2c80620002a75f395ff3fe60806040526004361061011e575f3560e01c80636c0a24eb1161009d57806395d89b411161006257806395d89b4114610129578063a9059cbb1461035b578063c816841b1461037a578063dd62ed3e14610399578063f4293890146103dd575f80fd5b80636c0a24eb146102b857806370a08231146102cd578063715018a6146102f857806382bf293c1461030c578063893d20e81461032b575f80fd5b80632b112e49116100e35780632b112e49146102025780632f54bf6e14610216578063313ce56714610243578063425ecff814610269578063495bb3ea14610297575f80fd5b806306fdde0314610129578063095ea7b31461017257806311704f52146101a157806318160ddd146101c157806323b872dd146101e3575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5061015c6040518060400160405280600881526020016734b6b837b9ba32b960c11b81525081565b6040516101699190610a50565b60405180910390f35b34801561017d575f80fd5b5061019161018c366004610ab6565b6103f1565b6040519015158152602001610169565b3480156101ac575f80fd5b5060055461019190600160a01b900460ff1681565b3480156101cc575f80fd5b506101d561045d565b604051908152602001610169565b3480156101ee575f80fd5b506101916101fd366004610ade565b610477565b34801561020d575f80fd5b506101d5610533565b348015610221575f80fd5b50610191610230366004610b17565b5f546001600160a01b0391821691161490565b34801561024e575f80fd5b50610257601281565b60405160ff9091168152602001610169565b348015610274575f80fd5b50610191610283366004610b17565b60046020525f908152604090205460ff1681565b3480156102a2575f80fd5b506102b66102b1366004610b17565b6105b6565b005b3480156102c3575f80fd5b506101d560015481565b3480156102d8575f80fd5b506101d56102e7366004610b17565b60026020525f908152604090205481565b348015610303575f80fd5b506102b661066b565b348015610317575f80fd5b506102b6610326366004610b30565b6106a5565b348015610336575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610169565b348015610366575f80fd5b50610191610375366004610ab6565b610753565b348015610385575f80fd5b50600554610343906001600160a01b031681565b3480156103a4575f80fd5b506101d56103b3366004610b47565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156103e8575f80fd5b506102b6610766565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061044b9086815260200190565b60405180910390a35060015b92915050565b6104696012600a610c6c565b610474906065610c7a565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610520576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526003825283812033825290915291909120546104fc9184906107bb565b6001600160a01b0385165f9081526003602090815260408083203384529091529020555b61052b8484846107f3565b949350505050565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead5f9081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc549091906105926012600a610c6c565b61059d906065610c7a565b6105a79190610c91565b6105b19190610c91565b905090565b5f546001600160a01b031633146105e85760405162461bcd60e51b81526004016105df90610ca4565b60405180910390fd5b600554600160a01b900460ff16156106425760405162461bcd60e51b815260206004820181905260248201527f43616e7420646f2061667465722074726164696e6720686173206f70656e656460448201526064016105df565b600580546001600160a01b039092166001600160a81b031990921691909117600160a01b179055565b5f546001600160a01b031633146106945760405162461bcd60e51b81526004016105df90610ca4565b5f80546001600160a01b0319169055565b5f546001600160a01b031633146106ce5760405162461bcd60e51b81526004016105df90610ca4565b600281101561071f5760405162461bcd60e51b815260206004820152601c60248201527f43616e7420736574206d61782077616c6c65742062656c6f772032250000000060448201526064016105df565b60648161072e6012600a610c6c565b610739906065610c7a565b6107439190610c7a565b61074d9190610cc4565b60015550565b5f61075f3384846107f3565b9392505050565b5f546001600160a01b0316331461078f5760405162461bcd60e51b81526004016105df90610ca4565b60405133904780156108fc02915f818181858888f193505050501580156107b8573d5f803e3d5ffd5b50565b5f81848411156107de5760405162461bcd60e51b81526004016105df9190610a50565b505f6107ea8486610c91565b95945050505050565b6001600160a01b0383165f9081526004602052604081205460ff1615801561083357506001600160a01b0383165f9081526004602052604090205460ff16155b801561084d57506005546001600160a01b03848116911614155b15610905576001546001600160a01b0384165f90815260026020526040902054610878908490610ce3565b11156108b95760405162461bcd60e51b815260206004820152601060248201526f1b585e081dd85b1b195d081b1a5b5a5d60821b60448201526064016105df565b600554600160a01b900460ff166109055760405162461bcd60e51b815260206004820152601060248201526f2a3930b234b733903737ba1037b832b760811b60448201526064016105df565b604080518082018252601a81527f496e73756666696369656e7420546f6b656e2042616c616e63650000000000006020808301919091526001600160a01b0387165f9081526002909152919091205461095f9184906107bb565b6001600160a01b038086165f90815260026020526040808220939093559085168152205461098d90836109f2565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109e09086815260200190565b60405180910390a35060019392505050565b5f806109fe8385610ce3565b90508381101561075f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105df565b5f6020808352835180828501525f5b81811015610a7b57858101830151858201604001528201610a5f565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610ab1575f80fd5b919050565b5f8060408385031215610ac7575f80fd5b610ad083610a9b565b946020939093013593505050565b5f805f60608486031215610af0575f80fd5b610af984610a9b565b9250610b0760208501610a9b565b9150604084013590509250925092565b5f60208284031215610b27575f80fd5b61075f82610a9b565b5f60208284031215610b40575f80fd5b5035919050565b5f8060408385031215610b58575f80fd5b610b6183610a9b565b9150610b6f60208401610a9b565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610bc657815f1904821115610bac57610bac610b78565b80851615610bb957918102915b93841c9390800290610b91565b509250929050565b5f82610bdc57506001610457565b81610be857505f610457565b8160018114610bfe5760028114610c0857610c24565b6001915050610457565b60ff841115610c1957610c19610b78565b50506001821b610457565b5060208310610133831016604e8410600b8410161715610c47575081810a610457565b610c518383610b8c565b805f1904821115610c6457610c64610b78565b029392505050565b5f61075f60ff841683610bce565b808202811582820484141761045757610457610b78565b8181038181111561045757610457610b78565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f82610cde57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561045757610457610b7856fea26469706673582212206670ec2d0eae3ab7b60e6ba78f740157d4e1462aedc0bf492e7f8c3ea4ab9a7164736f6c63430008150033