60806040523480156200001157600080fd5b5060408051808201825260088152671d195cdd081b999d60c21b6020808301919091528251808401909352600783526615195cdd13919560ca1b908301529033806200007757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200008281620000a9565b5060016200009183826200019e565b506002620000a082826200019e565b5050506200026a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200012457607f821691505b6020821081036200014557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200019957600081815260208120601f850160051c81016020861015620001745750805b601f850160051c820191505b81811015620001955782815560010162000180565b5050505b505050565b81516001600160401b03811115620001ba57620001ba620000f9565b620001d281620001cb84546200010f565b846200014b565b602080601f8311600181146200020a5760008415620001f15750858301515b600019600386901b1c1916600185901b17855562000195565b600085815260208120601f198616915b828110156200023b578886015182559484019460019091019084016200021a565b50858210156200025a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611368806200027a6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c80635c29d40d116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd146102d5578063e985e9c5146102e8578063f2fde38b1461032457600080fd5b806395d89b41146102a7578063a22cb465146102af578063b88d4fde146102c257600080fd5b806370a08231116100bd57806370a082311461027b578063715018a61461028e5780638da5cb5b1461029657600080fd5b80635c29d40d1461025f5780636352211e1461026857600080fd5b806318160ddd1161012f5780632f745c59116101145780632f745c591461022657806342842e0e146102395780634f6ccce71461024c57600080fd5b806318160ddd1461020157806323b872dd1461021357600080fd5b8063081812fc11610160578063081812fc146101b9578063095ea7b3146101e45780631249c58b146101f957600080fd5b806301ffc9a71461017c57806306fdde03146101a4575b600080fd5b61018f61018a366004610f9d565b610337565b60405190151581526020015b60405180910390f35b6101ac610362565b60405161019b9190611007565b6101cc6101c736600461101a565b6103f4565b6040516001600160a01b03909116815260200161019b565b6101f76101f236600461104f565b61041d565b005b6101f761042c565b6009545b60405190815260200161019b565b6101f7610221366004611079565b610453565b61020561023436600461104f565b6104e3565b6101f7610247366004611079565b610548565b61020561025a36600461101a565b610568565b610205600b5481565b6101cc61027636600461101a565b6105c1565b6102056102893660046110b5565b6105cc565b6101f7610614565b6000546001600160a01b03166101cc565b6101ac610626565b6101f76102bd3660046110d0565b610635565b6101f76102d0366004611122565b610640565b6101ac6102e336600461101a565b610657565b61018f6102f63660046111fe565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6101f76103323660046110b5565b610678565b60006001600160e01b0319821663780e9d6360e01b148061035c575061035c826106b6565b92915050565b60606001805461037190611231565b80601f016020809104026020016040519081016040528092919081815260200182805461039d90611231565b80156103ea5780601f106103bf576101008083540402835291602001916103ea565b820191906000526020600020905b8154815290600101906020018083116103cd57829003601f168201915b5050505050905090565b60006103ff82610706565b506000828152600560205260409020546001600160a01b031661035c565b61042882823361073f565b5050565b61043461074c565b61045133600b6000815461044790611281565b9182905550610779565b565b6001600160a01b03821661048257604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061048f8383336107de565b9050836001600160a01b0316816001600160a01b0316146104dd576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610479565b50505050565b60006104ee836105cc565b821061051f5760405163295f44f760e21b81526001600160a01b038416600482015260248101839052604401610479565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b61056383838360405180602001604052806000815250610640565b505050565b600061057360095490565b821061059c5760405163295f44f760e21b81526000600482015260248101839052604401610479565b600982815481106105af576105af61129a565b90600052602060002001549050919050565b600061035c82610706565b60006001600160a01b0382166105f8576040516322718ad960e21b815260006004820152602401610479565b506001600160a01b031660009081526004602052604090205490565b61061c61074c565b61045160006108b3565b60606002805461037190611231565b610428338383610910565b61064b848484610453565b6104dd848484846109af565b60606040518060600160405280602981526020016113336029913992915050565b61068061074c565b6001600160a01b0381166106aa57604051631e4fbdf760e01b815260006004820152602401610479565b6106b3816108b3565b50565b60006001600160e01b031982166380ac58cd60e01b14806106e757506001600160e01b03198216635b5e139f60e01b145b8061035c57506301ffc9a760e01b6001600160e01b031983161461035c565b6000818152600360205260408120546001600160a01b03168061035c57604051637e27328960e01b815260048101849052602401610479565b6105638383836001610ad8565b6000546001600160a01b031633146104515760405163118cdaa760e01b8152336004820152602401610479565b6001600160a01b0382166107a357604051633250574960e11b815260006004820152602401610479565b60006107b1838360006107de565b90506001600160a01b03811615610563576040516339e3563760e11b815260006004820152602401610479565b6000806107ec858585610c0a565b90506001600160a01b0381166108495761084484600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b61086c565b846001600160a01b0316816001600160a01b03161461086c5761086c8185610d10565b6001600160a01b0385166108885761088384610da1565b6108ab565b846001600160a01b0316816001600160a01b0316146108ab576108ab8585610e50565b949350505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03821661094257604051630b61174360e31b81526001600160a01b0383166004820152602401610479565b6001600160a01b03838116600081815260066020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156104dd57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109f19033908890879087906004016112b0565b6020604051808303816000875af1925050508015610a2c575060408051601f3d908101601f19168201909252610a29918101906112ec565b60015b610a95573d808015610a5a576040519150601f19603f3d011682016040523d82523d6000602084013e610a5f565b606091505b508051600003610a8d57604051633250574960e11b81526001600160a01b0385166004820152602401610479565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610ad157604051633250574960e11b81526001600160a01b0385166004820152602401610479565b5050505050565b8080610aec57506001600160a01b03821615155b15610bcd576000610afc84610706565b90506001600160a01b03831615801590610b285750826001600160a01b0316816001600160a01b031614155b8015610b5a57506001600160a01b0380821660009081526006602090815260408083209387168352929052205460ff16155b15610b835760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610479565b8115610bcb5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600560205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000828152600360205260408120546001600160a01b0390811690831615610c3757610c37818486610ea0565b6001600160a01b03811615610c7557610c54600085600080610ad8565b6001600160a01b038116600090815260046020526040902080546000190190555b6001600160a01b03851615610ca4576001600160a01b0385166000908152600460205260409020805460010190555b600084815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6000610d1b836105cc565b600083815260086020526040902054909150808214610d6e576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b600954600090610db390600190611309565b6000838152600a602052604081205460098054939450909284908110610ddb57610ddb61129a565b906000526020600020015490508060098381548110610dfc57610dfc61129a565b6000918252602080832090910192909255828152600a90915260408082208490558582528120556009805480610e3457610e3461131c565b6001900381819060005260206000200160009055905550505050565b60006001610e5d846105cc565b610e679190611309565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b610eab838383610f04565b610563576001600160a01b038316610ed957604051637e27328960e01b815260048101829052602401610479565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610479565b60006001600160a01b038316158015906108ab5750826001600160a01b0316846001600160a01b03161480610f5e57506001600160a01b0380851660009081526006602090815260408083209387168352929052205460ff165b806108ab5750506000908152600560205260409020546001600160a01b03908116911614919050565b6001600160e01b0319811681146106b357600080fd5b600060208284031215610faf57600080fd5b8135610fba81610f87565b9392505050565b6000815180845260005b81811015610fe757602081850181015186830182015201610fcb565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610fba6020830184610fc1565b60006020828403121561102c57600080fd5b5035919050565b80356001600160a01b038116811461104a57600080fd5b919050565b6000806040838503121561106257600080fd5b61106b83611033565b946020939093013593505050565b60008060006060848603121561108e57600080fd5b61109784611033565b92506110a560208501611033565b9150604084013590509250925092565b6000602082840312156110c757600080fd5b610fba82611033565b600080604083850312156110e357600080fd5b6110ec83611033565b91506020830135801515811461110157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561113857600080fd5b61114185611033565b935061114f60208601611033565b925060408501359150606085013567ffffffffffffffff8082111561117357600080fd5b818701915087601f83011261118757600080fd5b8135818111156111995761119961110c565b604051601f8201601f19908116603f011681019083821181831017156111c1576111c161110c565b816040528281528a60208487010111156111da57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561121157600080fd5b61121a83611033565b915061122860208401611033565b90509250929050565b600181811c9082168061124557607f821691505b60208210810361126557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016112935761129361126b565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60006001600160a01b038087168352808616602084015250836040830152608060608301526112e26080830184610fc1565b9695505050505050565b6000602082840312156112fe57600080fd5b8151610fba81610f87565b8181038181111561035c5761035c61126b565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f6672616d652d6465762e6175746f626f756e74792e78797a2f6e66742e6a736f6ea164736f6c6343000814000a