0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6115678061007e6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80631ac0cae814610051578063715018a6146100805780638da5cb5b1461008a578063f2fde38b1461009b575b600080fd5b61006461005f36600461046e565b6100ae565b6040516001600160a01b03909116815260200160405180910390f35b610088610295565b005b6000546001600160a01b0316610064565b6100886100a93660046104b1565b6102fb565b600080546001600160a01b0316331461010e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60006040518060200161012090610445565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606088811b8216602084015287811b8216603484015233901b16604882015242605c82015246607c820152909150600090609c016040516020818303038152906040528051906020012090506000818351602085016000f56040517ffca3b5aa0000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301529192509082169063fca3b5aa90602401600060405180830381600087803b15801561022c57600080fd5b505af1158015610240573d6000803e3d6000fd5b5050604080516001600160a01b038b811682528a81166020830152851693507f8bbc1575ac5daad70d652762f32644b91201086056351f6aa12e82950e2977bd92500160405180910390a29695505050505050565b6000546001600160a01b031633146102ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610105565b6102f960006103dd565b565b6000546001600160a01b031633146103555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610105565b6001600160a01b0381166103d15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610105565b6103da816103dd565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611087806104d483390190565b80356001600160a01b038116811461046957600080fd5b919050565b60008060006060848603121561048357600080fd5b61048c84610452565b925061049a60208501610452565b91506104a860408501610452565b90509250925092565b6000602082840312156104c357600080fd5b6104cc82610452565b939250505056fe60806040523480156200001157600080fd5b506040518060400160405280601481526020017f4b6179616b20537461626c6553776170204c5073000000000000000000000000815250604051806040016040528060098152602001680537461626c652d4c560bc1b81525081600390816200007b91906200014a565b5060046200008a82826200014a565b5050600580546001600160a01b031916331790555062000216565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000d057607f821691505b602082108103620000f157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200014557600081815260208120601f850160051c81016020861015620001205750805b601f850160051c820191505b8181101562000141578281556001016200012c565b5050505b505050565b81516001600160401b03811115620001665762000166620000a5565b6200017e81620001778454620000bb565b84620000f7565b602080601f831160018114620001b657600084156200019d5750858301515b600019600386901b1c1916600185901b17855562000141565b600085815260208120601f198616915b82811015620001e757888601518255948401946001909101908401620001c6565b5085821015620002065787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b610e6180620002266000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806340c10f1911610097578063a457c2d711610066578063a457c2d714610206578063a9059cbb14610219578063dd62ed3e1461022c578063fca3b5aa1461026557600080fd5b806340c10f19146101ad57806370a08231146101c257806379cc6790146101eb57806395d89b41146101fe57600080fd5b806318160ddd116100d357806318160ddd1461016657806323b872dd14610178578063313ce5671461018b578063395093511461019a57600080fd5b806306fdde03146100fa5780630754617214610118578063095ea7b314610143575b600080fd5b610102610278565b60405161010f9190610c69565b60405180910390f35b60055461012b906001600160a01b031681565b6040516001600160a01b03909116815260200161010f565b610156610151366004610cf1565b61030a565b604051901515815260200161010f565b6002545b60405190815260200161010f565b610156610186366004610d1b565b610324565b6040516012815260200161010f565b6101566101a8366004610cf1565b610348565b6101c06101bb366004610cf1565b610387565b005b61016a6101d0366004610d57565b6001600160a01b031660009081526020819052604090205490565b6101c06101f9366004610cf1565b6103f4565b610102610458565b610156610214366004610cf1565b610467565b610156610227366004610cf1565b610511565b61016a61023a366004610d79565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c0610273366004610d57565b61051f565b60606003805461028790610dac565b80601f01602080910402602001604051908101604052809291908181526020018280546102b390610dac565b80156103005780601f106102d557610100808354040283529160200191610300565b820191906000526020600020905b8154815290600101906020018083116102e357829003601f168201915b5050505050905090565b6000336103188185856105ed565b60019150505b92915050565b600033610332858285610746565b61033d8585856107f6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906103189082908690610382908790610e2e565b6105ed565b6005546001600160a01b031633146103e65760405162461bcd60e51b815260206004820152600a60248201527f4e6f74206d696e7465720000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6103f08282610a0d565b5050565b6005546001600160a01b0316331461044e5760405162461bcd60e51b815260206004820152600a60248201527f4e6f74206d696e7465720000000000000000000000000000000000000000000060448201526064016103dd565b6103f08282610aec565b60606004805461028790610dac565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156105045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103dd565b61033d82868684036105ed565b6000336103188185856107f6565b6005546001600160a01b031633146105795760405162461bcd60e51b815260206004820152600a60248201527f4e6f74206d696e7465720000000000000000000000000000000000000000000060448201526064016103dd565b6005546040516001600160a01b038084169216907f0b5e7be615a67a819aff3f47c967d1535cead1b98db60fafdcbf22dcaa8fa5a990600090a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6001600160a01b0383166106685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b0382166106e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f057818110156107e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103dd565b6107f084848484036105ed565b50505050565b6001600160a01b0383166108725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b0382166108ee5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b0383166000908152602081905260409020548181101561097d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906109b4908490610e2e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a0091815260200190565b60405180910390a36107f0565b6001600160a01b038216610a635760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103dd565b8060026000828254610a759190610e2e565b90915550506001600160a01b03821660009081526020819052604081208054839290610aa2908490610e2e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610b685760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b03821660009081526020819052604090205481811015610bf75760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103dd565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610c26908490610e41565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610739565b600060208083528351808285015260005b81811015610c9657858101830151858201604001528201610c7a565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b80356001600160a01b0381168114610cec57600080fd5b919050565b60008060408385031215610d0457600080fd5b610d0d83610cd5565b946020939093013593505050565b600080600060608486031215610d3057600080fd5b610d3984610cd5565b9250610d4760208501610cd5565b9150604084013590509250925092565b600060208284031215610d6957600080fd5b610d7282610cd5565b9392505050565b60008060408385031215610d8c57600080fd5b610d9583610cd5565b9150610da360208401610cd5565b90509250929050565b600181811c90821680610dc057607f821691505b602082108103610df9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561031e5761031e610dff565b8181038181111561031e5761031e610dff56fea164736f6c6343000813000aa164736f6c6343000813000a