0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063817b1cd2116100c3578063b3f8d6e31161007c578063b3f8d6e3146103ad578063d650694c146103c2578063dd62ed3e146103d5578063e86f1b5c1461040e578063ec33001a14610416578063f3c756dc1461042957600080fd5b8063817b1cd2146102bb57806382e4eda4146102c457806395d89b411461035c578063a457c2d71461037f578063a9059cbb14610392578063b066da16146103a557600080fd5b8063313ce56711610115578063313ce567146102425780633149432c1461025c57806338a058711461026f57806339267f0914610277578063395093511461027f57806370a082311461029257600080fd5b806306fdde031461015d578063095ea7b31461019b578063160e573f146101be57806318160ddd146102135780631c4888251461022557806323b872dd1461022f575b600080fd5b610185604051806040016040528060098152602001684372616220436c617760b81b81525081565b604051610192919061140f565b60405180910390f35b6101ae6101a936600461135f565b61043c565b6040519015158152602001610192565b6101f36101cc3660046112cb565b60066020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610192565b6004545b604051908152602001610192565b61022d610453565b005b6101ae61023d36600461131f565b610563565b61024a601281565b60405160ff9091168152602001610192565b61021761026a3660046112cb565b6105cc565b61022d61060f565b61022d6106af565b6101ae61028d36600461135f565b610743565b6102176102a03660046112cb565b6001600160a01b031660009081526001602052604090205490565b61021760035481565b61031c6102d23660046112cb565b60006020819052908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03811690600160a01b900460ff1687565b60408051978852602088019690965294860193909352606085019190915260808401526001600160a01b031660a0830152151560c082015260e001610192565b61018560405180604001604052806004815260200163434c415760e01b81525081565b6101ae61038d36600461135f565b610779565b6101ae6103a036600461135f565b6107c8565b6102176107d5565b33600090815260016020526040902054610217565b6102176103d03660046112cb565b6108d5565b6102176103e33660046112e7565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61022d610944565b6101ae6104243660046112cb565b610ad4565b61022d61043736600461138a565b610b38565b6000610449338484610c86565b5060015b92915050565b60055460ff161561047f5760405162461bcd60e51b815260040161047690611462565b60405180910390fd5b6005805460ff1916600117905560006104966107d5565b336000908152600660205260409020600301549091508082116105075760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656c696769626c652c206275726e204352414220746f206d696e7420604482015263434c415760e01b6064820152608401610476565b60006105138383610dab565b3360009081526006602052604081206003018054929350859290919061053a908490611485565b9091555061055490503361054f836064610ded565b610e2f565b50506005805460ff1916905550565b6000610570848484610f0a565b6105c284336105bd85604051806060016040528060288152602001611545602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611090565b610c86565b5060019392505050565b6001600160a01b0381166000908152600660205260408120546106086104e3610602612710816105fb886108d5565b86906110ca565b90610ded565b9392505050565b60055460ff16156106325760405162461bcd60e51b815260040161047690611462565b6005805460ff191660011790553360009081526006602052604090205461069b5760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610476565b6106a3611149565b6005805460ff19169055565b60055460ff16156106d25760405162461bcd60e51b815260040161047690611462565b6005805460ff191660011790553360009081526006602052604090205461073b5760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610476565b6106a36111a7565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104499185906105bd908661123e565b600061044933846105bd8560405180606001604052806025815260200161156d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611090565b6000610449338484610f0a565b60006108226040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6007546040516320b93b6960e21b81523360048201526001600160a01b03909116906382e4eda49060240160e06040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d91906113a2565b151560c08801526001600160a01b031660a0870152608086015260608501819052604085019190915260208401919091529152919050565b6001600160a01b0381166000908152600660205260408120600101546108fd57506000919050565b6001600160a01b03821660009081526006602052604081206001015461092b90603c90610602904290610dab565b90506001811061093b5792915050565b50600092915050565b60055460ff16156109675760405162461bcd60e51b815260040161047690611462565b6005805460ff19166001179055336000908152600660205260409020546109db5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20756e73756666696369656e74207374616b65642062616c616e604482015261636560f01b6064820152608401610476565b6109e433610ad4565b610a475760405162461bcd60e51b815260206004820152602e60248201527f746f6b656e732063616e6e6f7420626520756e7374616b6564207965742e206d60448201526d696e203720646179207374616b6560901b6064820152608401610476565b33600090815260066020526040902054610a5f611149565b3360009081526006602052604081206001810182905555600354610a839082610dab565b600355610a91303383610f0a565b60405181815233907f43a932fdc9d096891853e1e003cefbdaa5f14e174721aa1f9668616323afa334906020015b60405180910390a2506005805460ff19169055565b6001600160a01b038116600090815260066020526040812060010154610afc57506000919050565b42610b30610b0e6201518060076110ca565b6001600160a01b0385166000908152600660205260409020600101549061123e565b111592915050565b60055460ff1615610b5b5760405162461bcd60e51b815260040161047690611462565b6005805460ff1916600117905580610ba25760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b6044820152606401610476565b80610bb93360009081526001602052604090205490565b1015610c075760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e636500000000006044820152606401610476565b610c0f611149565b33600090815260066020526040902054610c29908261123e565b33600090815260066020526040902055600354610c46908261123e565b600355610c54333083610f0a565b60405181815233907facf5378a9125b9a91e37c0cad37a66b4b63bc3494776388fc87056260e03157690602001610abf565b6001600160a01b038316610ce85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061060883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611090565b600061060883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129d565b806001600160a01b038316610e865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610476565b600454610e93908261123e565b6004556001600160a01b038316600090815260016020526040902054610eb9908261123e565b6001600160a01b0384166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d9e9085815260200190565b6001600160a01b038316610f6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b038216610fd05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b61100d8160405180606001604052806026815260200161151f602691396001600160a01b0386166000908152600160205260409020549190611090565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461103c908261123e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d9e9085815260200190565b600081848411156110b45760405162461bcd60e51b8152600401610476919061140f565b5060006110c184866114dc565b95945050505050565b6000826110d95750600061044d565b60006110e583856114bd565b9050826110f2858361149d565b146106085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610476565b6000611154336105cc565b33600090815260066020526040902042600190910155905080156111a45761117c3382610e2f565b336000908152600660205260408120600201805483929061119e908490611485565b90915550505b50565b60006111b2336105cc565b905080156111a4576111c43082610e2f565b336000908152600660205260409020546111de908261123e565b336000908152600660205260409020556003546111fb908261123e565b6003553360009081526006602052604081206002018054839290611220908490611485565b90915550503360009081526006602052604090204260019091015550565b60008061124b8385611485565b9050838110156106085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610476565b600081836112be5760405162461bcd60e51b8152600401610476919061140f565b5060006110c1848661149d565b6000602082840312156112dc578081fd5b813561060881611509565b600080604083850312156112f9578081fd5b823561130481611509565b9150602083013561131481611509565b809150509250929050565b600080600060608486031215611333578081fd5b833561133e81611509565b9250602084013561134e81611509565b929592945050506040919091013590565b60008060408385031215611371578182fd5b823561137c81611509565b946020939093013593505050565b60006020828403121561139b578081fd5b5035919050565b600080600080600080600060e0888a0312156113bc578283fd5b875196506020880151955060408801519450606088015193506080880151925060a08801516113ea81611509565b60c089015190925080151581146113ff578182fd5b8091505092959891949750929550565b6000602080835283518082850152825b8181101561143b5785810183015185820160400152820161141f565b8181111561144c5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526009908201526853796e63206c6f636b60b81b604082015260600190565b60008219821115611498576114986114f3565b500190565b6000826114b857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156114d7576114d76114f3565b500290565b6000828210156114ee576114ee6114f3565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111a457600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3aff609758ae9359fc375813df57384fd4c17361c8a5db96cbc07c9da77161f64736f6c63430008040033
0x608060405234801561001057600080fd5b50600780546001600160a01b0319167324bcec1afda63e622a97f17cff9a61ffcfd9b7351790556115c7806100466000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063817b1cd2116100c3578063b3f8d6e31161007c578063b3f8d6e3146103ad578063d650694c146103c2578063dd62ed3e146103d5578063e86f1b5c1461040e578063ec33001a14610416578063f3c756dc1461042957600080fd5b8063817b1cd2146102bb57806382e4eda4146102c457806395d89b411461035c578063a457c2d71461037f578063a9059cbb14610392578063b066da16146103a557600080fd5b8063313ce56711610115578063313ce567146102425780633149432c1461025c57806338a058711461026f57806339267f0914610277578063395093511461027f57806370a082311461029257600080fd5b806306fdde031461015d578063095ea7b31461019b578063160e573f146101be57806318160ddd146102135780631c4888251461022557806323b872dd1461022f575b600080fd5b610185604051806040016040528060098152602001684372616220436c617760b81b81525081565b604051610192919061140f565b60405180910390f35b6101ae6101a936600461135f565b61043c565b6040519015158152602001610192565b6101f36101cc3660046112cb565b60066020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610192565b6004545b604051908152602001610192565b61022d610453565b005b6101ae61023d36600461131f565b610563565b61024a601281565b60405160ff9091168152602001610192565b61021761026a3660046112cb565b6105cc565b61022d61060f565b61022d6106af565b6101ae61028d36600461135f565b610743565b6102176102a03660046112cb565b6001600160a01b031660009081526001602052604090205490565b61021760035481565b61031c6102d23660046112cb565b60006020819052908152604090208054600182015460028301546003840154600485015460059095015493949293919290916001600160a01b03811690600160a01b900460ff1687565b60408051978852602088019690965294860193909352606085019190915260808401526001600160a01b031660a0830152151560c082015260e001610192565b61018560405180604001604052806004815260200163434c415760e01b81525081565b6101ae61038d36600461135f565b610779565b6101ae6103a036600461135f565b6107c8565b6102176107d5565b33600090815260016020526040902054610217565b6102176103d03660046112cb565b6108d5565b6102176103e33660046112e7565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61022d610944565b6101ae6104243660046112cb565b610ad4565b61022d61043736600461138a565b610b38565b6000610449338484610c86565b5060015b92915050565b60055460ff161561047f5760405162461bcd60e51b815260040161047690611462565b60405180910390fd5b6005805460ff1916600117905560006104966107d5565b336000908152600660205260409020600301549091508082116105075760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656c696769626c652c206275726e204352414220746f206d696e7420604482015263434c415760e01b6064820152608401610476565b60006105138383610dab565b3360009081526006602052604081206003018054929350859290919061053a908490611485565b9091555061055490503361054f836064610ded565b610e2f565b50506005805460ff1916905550565b6000610570848484610f0a565b6105c284336105bd85604051806060016040528060288152602001611545602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611090565b610c86565b5060019392505050565b6001600160a01b0381166000908152600660205260408120546106086104e3610602612710816105fb886108d5565b86906110ca565b90610ded565b9392505050565b60055460ff16156106325760405162461bcd60e51b815260040161047690611462565b6005805460ff191660011790553360009081526006602052604090205461069b5760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610476565b6106a3611149565b6005805460ff19169055565b60055460ff16156106d25760405162461bcd60e51b815260040161047690611462565b6005805460ff191660011790553360009081526006602052604090205461073b5760405162461bcd60e51b815260206004820152601a60248201527f796f752068617665206e6f207374616b65642062616c616e63650000000000006044820152606401610476565b6106a36111a7565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916104499185906105bd908661123e565b600061044933846105bd8560405180606001604052806025815260200161156d602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611090565b6000610449338484610f0a565b60006108226040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6007546040516320b93b6960e21b81523360048201526001600160a01b03909116906382e4eda49060240160e06040518083038186803b15801561086557600080fd5b505afa158015610879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089d91906113a2565b151560c08801526001600160a01b031660a0870152608086015260608501819052604085019190915260208401919091529152919050565b6001600160a01b0381166000908152600660205260408120600101546108fd57506000919050565b6001600160a01b03821660009081526006602052604081206001015461092b90603c90610602904290610dab565b90506001811061093b5792915050565b50600092915050565b60055460ff16156109675760405162461bcd60e51b815260040161047690611462565b6005805460ff19166001179055336000908152600660205260409020546109db5760405162461bcd60e51b815260206004820152602260248201527f4572726f723a20756e73756666696369656e74207374616b65642062616c616e604482015261636560f01b6064820152608401610476565b6109e433610ad4565b610a475760405162461bcd60e51b815260206004820152602e60248201527f746f6b656e732063616e6e6f7420626520756e7374616b6564207965742e206d60448201526d696e203720646179207374616b6560901b6064820152608401610476565b33600090815260066020526040902054610a5f611149565b3360009081526006602052604081206001810182905555600354610a839082610dab565b600355610a91303383610f0a565b60405181815233907f43a932fdc9d096891853e1e003cefbdaa5f14e174721aa1f9668616323afa334906020015b60405180910390a2506005805460ff19169055565b6001600160a01b038116600090815260066020526040812060010154610afc57506000919050565b42610b30610b0e6201518060076110ca565b6001600160a01b0385166000908152600660205260409020600101549061123e565b111592915050565b60055460ff1615610b5b5760405162461bcd60e51b815260040161047690611462565b6005805460ff1916600117905580610ba25760405162461bcd60e51b815260206004820152600a6024820152691e995c9bc81a5b9c1d5d60b21b6044820152606401610476565b80610bb93360009081526001602052604090205490565b1015610c075760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20696e73756666696369656e742062616c616e636500000000006044820152606401610476565b610c0f611149565b33600090815260066020526040902054610c29908261123e565b33600090815260066020526040902055600354610c46908261123e565b600355610c54333083610f0a565b60405181815233907facf5378a9125b9a91e37c0cad37a66b4b63bc3494776388fc87056260e03157690602001610abf565b6001600160a01b038316610ce85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610476565b6001600160a01b038216610d495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610476565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061060883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611090565b600061060883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061129d565b806001600160a01b038316610e865760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610476565b600454610e93908261123e565b6004556001600160a01b038316600090815260016020526040902054610eb9908261123e565b6001600160a01b0384166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d9e9085815260200190565b6001600160a01b038316610f6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610476565b6001600160a01b038216610fd05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610476565b61100d8160405180606001604052806026815260200161151f602691396001600160a01b0386166000908152600160205260409020549190611090565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461103c908261123e565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d9e9085815260200190565b600081848411156110b45760405162461bcd60e51b8152600401610476919061140f565b5060006110c184866114dc565b95945050505050565b6000826110d95750600061044d565b60006110e583856114bd565b9050826110f2858361149d565b146106085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610476565b6000611154336105cc565b33600090815260066020526040902042600190910155905080156111a45761117c3382610e2f565b336000908152600660205260408120600201805483929061119e908490611485565b90915550505b50565b60006111b2336105cc565b905080156111a4576111c43082610e2f565b336000908152600660205260409020546111de908261123e565b336000908152600660205260409020556003546111fb908261123e565b6003553360009081526006602052604081206002018054839290611220908490611485565b90915550503360009081526006602052604090204260019091015550565b60008061124b8385611485565b9050838110156106085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610476565b600081836112be5760405162461bcd60e51b8152600401610476919061140f565b5060006110c1848661149d565b6000602082840312156112dc578081fd5b813561060881611509565b600080604083850312156112f9578081fd5b823561130481611509565b9150602083013561131481611509565b809150509250929050565b600080600060608486031215611333578081fd5b833561133e81611509565b9250602084013561134e81611509565b929592945050506040919091013590565b60008060408385031215611371578182fd5b823561137c81611509565b946020939093013593505050565b60006020828403121561139b578081fd5b5035919050565b600080600080600080600060e0888a0312156113bc578283fd5b875196506020880151955060408801519450606088015193506080880151925060a08801516113ea81611509565b60c089015190925080151581146113ff578182fd5b8091505092959891949750929550565b6000602080835283518082850152825b8181101561143b5785810183015185820160400152820161141f565b8181111561144c5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526009908201526853796e63206c6f636b60b81b604082015260600190565b60008219821115611498576114986114f3565b500190565b6000826114b857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156114d7576114d76114f3565b500290565b6000828210156114ee576114ee6114f3565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146111a457600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b3aff609758ae9359fc375813df57384fd4c17361c8a5db96cbc07c9da77161f64736f6c63430008040033