0x6080604052600436106101a05760003560e01c80639cb8a1ab116100ec578063e01937ab1161008a578063f6153ccd11610064578063f6153ccd14610564578063f887ea401461057a578063fc0c546a1461059a578063ff96461b146105ba57600080fd5b8063e01937ab14610504578063e02ce1cf14610524578063f2fde38b1461054457600080fd5b8063bc157ac1116100c6578063bc157ac11461048e578063c54e44eb146104ae578063c851cc32146104ce578063d54ad2a1146104ee57600080fd5b80639cb8a1ab1461042e578063ad5c46481461044e578063ad64d0681461046e57600080fd5b806342a65ce21161015957806369e1154d1161013357806369e1154d146103345780637429c946146103545780638da5cb5b146103745780638e90f968146103ac57600080fd5b806342a65ce2146102c657806343264349146102f457806357333cca1461031457600080fd5b8063193d6e89146101ac5780631fb95b9b146101ce57806321ce919d146101ee5780632819446d146102555780632a587f6a146102865780632e1a7d4d146102a657600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611c50565b6105da565b005b3480156101da57600080fd5b506101cc6101e9366004611c16565b61060a565b3480156101fa57600080fd5b506102356102093660046119d4565b600560209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561026157600080fd5b5060015461027690600160a01b900460ff1681565b604051901515815260200161024c565b34801561029257600080fd5b506101cc6102a1366004611a79565b61063f565b3480156102b257600080fd5b506101cc6102c1366004611c91565b610662565b3480156102d257600080fd5b506102e66102e13660046119d4565b6107ae565b60405190815260200161024c565b34801561030057600080fd5b506101cc61030f366004611cf3565b610925565b34801561032057600080fd5b506102e661032f366004611a00565b610a98565b34801561034057600080fd5b506101cc61034f366004611aee565b610ad5565b34801561036057600080fd5b506101cc61036f36600461199a565b610b29565b34801561038057600080fd5b50600754610394906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b857600080fd5b506103ff6103c7366004611c91565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015492949193909260ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c00161024c565b34801561043a57600080fd5b506101cc610449366004611a35565b610b62565b34801561045a57600080fd5b50600254610394906001600160a01b031681565b34801561047a57600080fd5b50610394610489366004611c91565b610bb0565b34801561049a57600080fd5b506101cc6104a9366004611cf3565b610bda565b3480156104ba57600080fd5b50600354610394906001600160a01b031681565b3480156104da57600080fd5b506101cc6104e936600461199a565b610e99565b3480156104fa57600080fd5b506102e6600b5481565b34801561051057600080fd5b5061027661051f3660046119d4565b610f5f565b34801561053057600080fd5b506101cc61053f366004611cc3565b610fa6565b34801561055057600080fd5b506101cc61055f36600461199a565b610ff3565b34801561057057600080fd5b506102e6600a5481565b34801561058657600080fd5b50600154610394906001600160a01b031681565b3480156105a657600080fd5b50600054610394906001600160a01b031681565b3480156105c657600080fd5b506102e66105d5366004611d1a565b61102c565b6007546001600160a01b031633146105f157600080fd5b6106056001600160a01b0384168383611057565b505050565b6007546001600160a01b0316331461062157600080fd5b60018054911515600160a01b0260ff60a01b19909216919091179055565b6007546001600160a01b0316331461065657600080fd5b61060560068383611922565b33600090815260056020908152604080832084845282528083206004909252909120600182015442906106d55760405162461bcd60e51b8152602060048201526016602482015275151a195c99481a5cc81b9bc8185b9e481c995dd85c9960521b60448201526064015b60405180910390fd5b600182015483546106e69190611ea6565b8110156107525760405162461bcd60e51b815260206004820152603460248201527f546f6b656e732063616e206e6f742062652077697468647261776e20647572696044820152731b99c81d1a19481b1bd8dad959081c195c9a5bd960621b60648201526084016106cc565b8083556001830154600b546107679190611ea6565b600b556001830180546000918290556002850180549192839261078b908490611ea6565b90915550506000546107a7906001600160a01b03163383611057565b5050505050565b600080546001600160a01b03848116911614156107cc57508061091f565b6040805160038082526080820190925260009160208201606080368337019050509050838160008151811061080357610803611f73565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061083457610834611f73565b6001600160a01b03928316602091820292909201015260005482519116908290600290811061086557610865611f73565b6001600160a01b03928316602091820292909201015260015460405163d06ca61f60e01b8152600092919091169063d06ca61f906108a99087908690600401611e51565b60006040518083038186803b1580156108c157600080fd5b505afa1580156108d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fd9190810190611b51565b90508060028151811061091257610912611f73565b6020026020010151925050505b92915050565b82156109685760405162461bcd60e51b815260206004820152601260248201527153776170206973206e6f742061637469766560701b60448201526064016106cc565b600081116109885760405162461bcd60e51b81526004016106cc90611dcf565b60008381526004602052604090206005015460ff166109b95760405162461bcd60e51b81526004016106cc90611e10565b600154600160a01b900460ff1615610a1f5760006109d6836110ba565b905080610a1d5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881a5cc81b9bdd081858d8d95c1d1959605a1b60448201526064016106cc565b505b610a346001600160a01b03831633308461111e565b600083815260046020526040812060020154610a5e90606490610a5890859061115c565b906111db565b90506000610a6c838361121d565b9050610a7984338461125f565b6003546001600160a01b038581169116146107a7576107a78482611391565b600080610aa585846107ae565b600085815260046020526040902060020154909150610acc90606490610a5890849061115c565b95945050505050565b6007546001600160a01b03163314610aec57600080fd5b60005b8181101561060557610b17838383818110610b0c57610b0c611f73565b9050608002016114c2565b80610b2181611f42565b915050610aef565b6007546001600160a01b03163314610b4057600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b03163314610b7957600080fd5b6001600160a01b03909416600090815260056020908152604080832095835294905292909220908155600181019190915560020155565b60068181548110610bc057600080fd5b6000918252602090912001546001600160a01b0316905081565b8260011480610be95750826002145b80610bf45750826003145b610c355760405162461bcd60e51b8152602060048201526012602482015271141bdbdb081a59081a5cc81d5b9d985b1a5960721b60448201526064016106cc565b60008111610c555760405162461bcd60e51b81526004016106cc90611dcf565b60008381526004602052604090206005015460ff16610c865760405162461bcd60e51b81526004016106cc90611e10565b600154600160a01b900460ff1615610cec576000610ca3836110ba565b905080610cea5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881a5cc81b9bdd081858d8d95c1d1959605a1b60448201526064016106cc565b505b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d689190611caa565b9050610d7f6001600160a01b03841633308561111e565b6003546001600160a01b03848116911614610d9e57610d9e8383611391565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610de257600080fd5b505afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611caa565b90506000610e28828461121d565b600354909150600090610e45906001600160a01b03168884610a98565b3360009081526005602090815260408083208b845290915290204280825560018201549293509091610e78908490611ea6565b6001830155600a54610e8b908490611ea6565b600a55505050505050505050565b6007546001600160a01b03163314610eb057600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c91906119b7565b600280546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0382166000908152600560209081526040808320848452825280832060049092528220600181015482544291610f9b91611ea6565b111595945050505050565b6007546001600160a01b03163314610fbd57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610605573d6000803e3d6000fd5b6007546001600160a01b0316331461100a57600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526004602052604081206002015461105090606490610a5890859061115c565b9392505050565b6040516001600160a01b03831660248201526044810182905261060590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611540565b6000805b60065481101561111557600681815481106110db576110db611f73565b6000918252602090912001546001600160a01b03848116911614156111035750600192915050565b8061110d81611f42565b9150506110be565b50600092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526111569085906323b872dd60e01b90608401611083565b50505050565b60008261116b5750600061091f565b60006111778385611ee0565b9050826111848583611ebe565b146110505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cc565b600061105083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611612565b600061105083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611640565b6040805160038082526080820190925260009160208201606080368337019050509050838160008151811061129657611296611f73565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106112c7576112c7611f73565b6001600160a01b0392831660209182029290920101526000548251911690829060029081106112f8576112f8611f73565b6001600160a01b03928316602091820292909201015260015461132091868116911684611671565b600154604051635c11d79560e01b81526001600160a01b0390911690635c11d79590611359908590600090869089904290600401611e6a565b600060405180830381600087803b15801561137357600080fd5b505af1158015611387573d6000803e3d6000fd5b5050505050505050565b604080516003808252608082019092526000916020820160608036833701905050905082816000815181106113c8576113c8611f73565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106113f9576113f9611f73565b6001600160a01b03928316602091820292909201015260035482519116908290600290811061142a5761142a611f73565b6001600160a01b03928316602091820292909201015260015461145291858116911684611671565b600154604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061148b908590600090869030904290600401611e6a565b600060405180830381600087803b1580156114a557600080fd5b505af11580156114b9573d6000803e3d6000fd5b50505050505050565b80356000818152600460209081526040909120919091556009546114e9918301359061115c565b813560009081526004602052604090819020600181019290925582013560029091015561151c6080820160608301611c16565b90356000908152600460205260409020600501805460ff1916911515919091179055565b6000611595826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117959092919063ffffffff16565b80519091501561060557808060200190518101906115b39190611c33565b6106055760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106cc565b600081836116335760405162461bcd60e51b81526004016106cc9190611d9c565b506000610acc8486611ebe565b600081848411156116645760405162461bcd60e51b81526004016106cc9190611d9c565b506000610acc8486611eff565b8015806116fa5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190611caa565b155b6117655760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106cc565b6040516001600160a01b03831660248201526044810182905261060590849063095ea7b360e01b90606401611083565b60606117a484846000856117ac565b949350505050565b60608247101561180d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106cc565b600080866001600160a01b031685876040516118299190611d80565b60006040518083038185875af1925050503d8060008114611866576040519150601f19603f3d011682016040523d82523d6000602084013e61186b565b606091505b509150915061187c87838387611887565b979650505050505050565b606083156118f35782516118ec576001600160a01b0385163b6118ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106cc565b50816117a4565b6117a483838151156119085781518083602001fd5b8060405162461bcd60e51b81526004016106cc9190611d9c565b828054828255906000526020600020908101928215611975579160200282015b828111156119755781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611942565b50611981929150611985565b5090565b5b808211156119815760008155600101611986565b6000602082840312156119ac57600080fd5b813561105081611f9f565b6000602082840312156119c957600080fd5b815161105081611f9f565b600080604083850312156119e757600080fd5b82356119f281611f9f565b946020939093013593505050565b600080600060608486031215611a1557600080fd5b8335611a2081611f9f565b95602085013595506040909401359392505050565b600080600080600060a08688031215611a4d57600080fd5b8535611a5881611f9f565b97602087013597506040870135966060810135965060800135945092505050565b60008060208385031215611a8c57600080fd5b823567ffffffffffffffff80821115611aa457600080fd5b818501915085601f830112611ab857600080fd5b813581811115611ac757600080fd5b8660208260051b8501011115611adc57600080fd5b60209290920196919550909350505050565b60008060208385031215611b0157600080fd5b823567ffffffffffffffff80821115611b1957600080fd5b818501915085601f830112611b2d57600080fd5b813581811115611b3c57600080fd5b8660208260071b8501011115611adc57600080fd5b60006020808385031215611b6457600080fd5b825167ffffffffffffffff80821115611b7c57600080fd5b818501915085601f830112611b9057600080fd5b815181811115611ba257611ba2611f89565b8060051b604051601f19603f83011681018181108582111715611bc757611bc7611f89565b604052828152858101935084860182860187018a1015611be657600080fd5b600095505b83861015611c09578051855260019590950194938601938601611beb565b5098975050505050505050565b600060208284031215611c2857600080fd5b813561105081611fb7565b600060208284031215611c4557600080fd5b815161105081611fb7565b600080600060608486031215611c6557600080fd5b8335611c7081611f9f565b92506020840135611c8081611f9f565b929592945050506040919091013590565b600060208284031215611ca357600080fd5b5035919050565b600060208284031215611cbc57600080fd5b5051919050565b60008060408385031215611cd657600080fd5b823591506020830135611ce881611f9f565b809150509250929050565b600080600060608486031215611d0857600080fd5b833592506020840135611c8081611f9f565b60008060408385031215611d2d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015611d755781516001600160a01b031687529582019590820190600101611d50565b509495945050505050565b60008251611d92818460208701611f16565b9190910192915050565b6020815260008251806020840152611dbb816040850160208701611f16565b601f01601f19169190910160400192915050565b60208082526021908201527f506c65617365206465706f736974206d6f7265207468616e203020746f6b656e6040820152607360f81b606082015260800190565b60208082526021908201527f4465706f73697473206172656e27742063757272656e746c7920656e61626c656040820152601960fa1b606082015260800190565b8281526040602082015260006117a46040830184611d3c565b85815284602082015260a060408201526000611e8960a0830186611d3c565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611eb957611eb9611f5d565b500190565b600082611edb57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611efa57611efa611f5d565b500290565b600082821015611f1157611f11611f5d565b500390565b60005b83811015611f31578181015183820152602001611f19565b838111156111565750506000910152565b6000600019821415611f5657611f56611f5d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611fb457600080fd5b50565b8015158114611fb457600080fdfea2646970667358221220aefac8ae5fa4b68cdf502bcc2d045424b27149125f54fc218ec03a5f1524004964736f6c63430008050033
0x6080604052600380546001600160a01b03191673dac17f958d2ee523a2206206994597c13d831ec71790556301e13380600855620151806009553480156200004657600080fd5b50604051620021cb380380620021cb833981016040819052620000699162000168565b60078054336001600160a01b0319918216179091556000805482166001600160a01b038581169190911790915560018054909216908316908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015620000dd57600080fd5b505afa158015620000f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000118919062000141565b600280546001600160a01b0319166001600160a01b039290921691909117905550620001c09050565b6000602082840312156200015457600080fd5b81516200016181620001a7565b9392505050565b600080604083850312156200017c57600080fd5b82516200018981620001a7565b60208401519092506200019c81620001a7565b809150509250929050565b6001600160a01b0381168114620001bd57600080fd5b50565b611ffb80620001d06000396000f3fe6080604052600436106101a05760003560e01c80639cb8a1ab116100ec578063e01937ab1161008a578063f6153ccd11610064578063f6153ccd14610564578063f887ea401461057a578063fc0c546a1461059a578063ff96461b146105ba57600080fd5b8063e01937ab14610504578063e02ce1cf14610524578063f2fde38b1461054457600080fd5b8063bc157ac1116100c6578063bc157ac11461048e578063c54e44eb146104ae578063c851cc32146104ce578063d54ad2a1146104ee57600080fd5b80639cb8a1ab1461042e578063ad5c46481461044e578063ad64d0681461046e57600080fd5b806342a65ce21161015957806369e1154d1161013357806369e1154d146103345780637429c946146103545780638da5cb5b146103745780638e90f968146103ac57600080fd5b806342a65ce2146102c657806343264349146102f457806357333cca1461031457600080fd5b8063193d6e89146101ac5780631fb95b9b146101ce57806321ce919d146101ee5780632819446d146102555780632a587f6a146102865780632e1a7d4d146102a657600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611c50565b6105da565b005b3480156101da57600080fd5b506101cc6101e9366004611c16565b61060a565b3480156101fa57600080fd5b506102356102093660046119d4565b600560209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b34801561026157600080fd5b5060015461027690600160a01b900460ff1681565b604051901515815260200161024c565b34801561029257600080fd5b506101cc6102a1366004611a79565b61063f565b3480156102b257600080fd5b506101cc6102c1366004611c91565b610662565b3480156102d257600080fd5b506102e66102e13660046119d4565b6107ae565b60405190815260200161024c565b34801561030057600080fd5b506101cc61030f366004611cf3565b610925565b34801561032057600080fd5b506102e661032f366004611a00565b610a98565b34801561034057600080fd5b506101cc61034f366004611aee565b610ad5565b34801561036057600080fd5b506101cc61036f36600461199a565b610b29565b34801561038057600080fd5b50600754610394906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b857600080fd5b506103ff6103c7366004611c91565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015492949193909260ff1686565b6040805196875260208701959095529385019290925260608401526080830152151560a082015260c00161024c565b34801561043a57600080fd5b506101cc610449366004611a35565b610b62565b34801561045a57600080fd5b50600254610394906001600160a01b031681565b34801561047a57600080fd5b50610394610489366004611c91565b610bb0565b34801561049a57600080fd5b506101cc6104a9366004611cf3565b610bda565b3480156104ba57600080fd5b50600354610394906001600160a01b031681565b3480156104da57600080fd5b506101cc6104e936600461199a565b610e99565b3480156104fa57600080fd5b506102e6600b5481565b34801561051057600080fd5b5061027661051f3660046119d4565b610f5f565b34801561053057600080fd5b506101cc61053f366004611cc3565b610fa6565b34801561055057600080fd5b506101cc61055f36600461199a565b610ff3565b34801561057057600080fd5b506102e6600a5481565b34801561058657600080fd5b50600154610394906001600160a01b031681565b3480156105a657600080fd5b50600054610394906001600160a01b031681565b3480156105c657600080fd5b506102e66105d5366004611d1a565b61102c565b6007546001600160a01b031633146105f157600080fd5b6106056001600160a01b0384168383611057565b505050565b6007546001600160a01b0316331461062157600080fd5b60018054911515600160a01b0260ff60a01b19909216919091179055565b6007546001600160a01b0316331461065657600080fd5b61060560068383611922565b33600090815260056020908152604080832084845282528083206004909252909120600182015442906106d55760405162461bcd60e51b8152602060048201526016602482015275151a195c99481a5cc81b9bc8185b9e481c995dd85c9960521b60448201526064015b60405180910390fd5b600182015483546106e69190611ea6565b8110156107525760405162461bcd60e51b815260206004820152603460248201527f546f6b656e732063616e206e6f742062652077697468647261776e20647572696044820152731b99c81d1a19481b1bd8dad959081c195c9a5bd960621b60648201526084016106cc565b8083556001830154600b546107679190611ea6565b600b556001830180546000918290556002850180549192839261078b908490611ea6565b90915550506000546107a7906001600160a01b03163383611057565b5050505050565b600080546001600160a01b03848116911614156107cc57508061091f565b6040805160038082526080820190925260009160208201606080368337019050509050838160008151811061080357610803611f73565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061083457610834611f73565b6001600160a01b03928316602091820292909201015260005482519116908290600290811061086557610865611f73565b6001600160a01b03928316602091820292909201015260015460405163d06ca61f60e01b8152600092919091169063d06ca61f906108a99087908690600401611e51565b60006040518083038186803b1580156108c157600080fd5b505afa1580156108d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fd9190810190611b51565b90508060028151811061091257610912611f73565b6020026020010151925050505b92915050565b82156109685760405162461bcd60e51b815260206004820152601260248201527153776170206973206e6f742061637469766560701b60448201526064016106cc565b600081116109885760405162461bcd60e51b81526004016106cc90611dcf565b60008381526004602052604090206005015460ff166109b95760405162461bcd60e51b81526004016106cc90611e10565b600154600160a01b900460ff1615610a1f5760006109d6836110ba565b905080610a1d5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881a5cc81b9bdd081858d8d95c1d1959605a1b60448201526064016106cc565b505b610a346001600160a01b03831633308461111e565b600083815260046020526040812060020154610a5e90606490610a5890859061115c565b906111db565b90506000610a6c838361121d565b9050610a7984338461125f565b6003546001600160a01b038581169116146107a7576107a78482611391565b600080610aa585846107ae565b600085815260046020526040902060020154909150610acc90606490610a5890849061115c565b95945050505050565b6007546001600160a01b03163314610aec57600080fd5b60005b8181101561060557610b17838383818110610b0c57610b0c611f73565b9050608002016114c2565b80610b2181611f42565b915050610aef565b6007546001600160a01b03163314610b4057600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6007546001600160a01b03163314610b7957600080fd5b6001600160a01b03909416600090815260056020908152604080832095835294905292909220908155600181019190915560020155565b60068181548110610bc057600080fd5b6000918252602090912001546001600160a01b0316905081565b8260011480610be95750826002145b80610bf45750826003145b610c355760405162461bcd60e51b8152602060048201526012602482015271141bdbdb081a59081a5cc81d5b9d985b1a5960721b60448201526064016106cc565b60008111610c555760405162461bcd60e51b81526004016106cc90611dcf565b60008381526004602052604090206005015460ff16610c865760405162461bcd60e51b81526004016106cc90611e10565b600154600160a01b900460ff1615610cec576000610ca3836110ba565b905080610cea5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881a5cc81b9bdd081858d8d95c1d1959605a1b60448201526064016106cc565b505b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d689190611caa565b9050610d7f6001600160a01b03841633308561111e565b6003546001600160a01b03848116911614610d9e57610d9e8383611391565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610de257600080fd5b505afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a9190611caa565b90506000610e28828461121d565b600354909150600090610e45906001600160a01b03168884610a98565b3360009081526005602090815260408083208b845290915290204280825560018201549293509091610e78908490611ea6565b6001830155600a54610e8b908490611ea6565b600a55505050505050505050565b6007546001600160a01b03163314610eb057600080fd5b600180546001600160a01b0319166001600160a01b038316908117909155604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b158015610f0457600080fd5b505afa158015610f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3c91906119b7565b600280546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0382166000908152600560209081526040808320848452825280832060049092528220600181015482544291610f9b91611ea6565b111595945050505050565b6007546001600160a01b03163314610fbd57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610605573d6000803e3d6000fd5b6007546001600160a01b0316331461100a57600080fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526004602052604081206002015461105090606490610a5890859061115c565b9392505050565b6040516001600160a01b03831660248201526044810182905261060590849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611540565b6000805b60065481101561111557600681815481106110db576110db611f73565b6000918252602090912001546001600160a01b03848116911614156111035750600192915050565b8061110d81611f42565b9150506110be565b50600092915050565b6040516001600160a01b03808516602483015283166044820152606481018290526111569085906323b872dd60e01b90608401611083565b50505050565b60008261116b5750600061091f565b60006111778385611ee0565b9050826111848583611ebe565b146110505760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106cc565b600061105083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611612565b600061105083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611640565b6040805160038082526080820190925260009160208201606080368337019050509050838160008151811061129657611296611f73565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106112c7576112c7611f73565b6001600160a01b0392831660209182029290920101526000548251911690829060029081106112f8576112f8611f73565b6001600160a01b03928316602091820292909201015260015461132091868116911684611671565b600154604051635c11d79560e01b81526001600160a01b0390911690635c11d79590611359908590600090869089904290600401611e6a565b600060405180830381600087803b15801561137357600080fd5b505af1158015611387573d6000803e3d6000fd5b5050505050505050565b604080516003808252608082019092526000916020820160608036833701905050905082816000815181106113c8576113c8611f73565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106113f9576113f9611f73565b6001600160a01b03928316602091820292909201015260035482519116908290600290811061142a5761142a611f73565b6001600160a01b03928316602091820292909201015260015461145291858116911684611671565b600154604051635c11d79560e01b81526001600160a01b0390911690635c11d7959061148b908590600090869030904290600401611e6a565b600060405180830381600087803b1580156114a557600080fd5b505af11580156114b9573d6000803e3d6000fd5b50505050505050565b80356000818152600460209081526040909120919091556009546114e9918301359061115c565b813560009081526004602052604090819020600181019290925582013560029091015561151c6080820160608301611c16565b90356000908152600460205260409020600501805460ff1916911515919091179055565b6000611595826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117959092919063ffffffff16565b80519091501561060557808060200190518101906115b39190611c33565b6106055760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106cc565b600081836116335760405162461bcd60e51b81526004016106cc9190611d9c565b506000610acc8486611ebe565b600081848411156116645760405162461bcd60e51b81526004016106cc9190611d9c565b506000610acc8486611eff565b8015806116fa5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f89190611caa565b155b6117655760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016106cc565b6040516001600160a01b03831660248201526044810182905261060590849063095ea7b360e01b90606401611083565b60606117a484846000856117ac565b949350505050565b60608247101561180d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106cc565b600080866001600160a01b031685876040516118299190611d80565b60006040518083038185875af1925050503d8060008114611866576040519150601f19603f3d011682016040523d82523d6000602084013e61186b565b606091505b509150915061187c87838387611887565b979650505050505050565b606083156118f35782516118ec576001600160a01b0385163b6118ec5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106cc565b50816117a4565b6117a483838151156119085781518083602001fd5b8060405162461bcd60e51b81526004016106cc9190611d9c565b828054828255906000526020600020908101928215611975579160200282015b828111156119755781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190611942565b50611981929150611985565b5090565b5b808211156119815760008155600101611986565b6000602082840312156119ac57600080fd5b813561105081611f9f565b6000602082840312156119c957600080fd5b815161105081611f9f565b600080604083850312156119e757600080fd5b82356119f281611f9f565b946020939093013593505050565b600080600060608486031215611a1557600080fd5b8335611a2081611f9f565b95602085013595506040909401359392505050565b600080600080600060a08688031215611a4d57600080fd5b8535611a5881611f9f565b97602087013597506040870135966060810135965060800135945092505050565b60008060208385031215611a8c57600080fd5b823567ffffffffffffffff80821115611aa457600080fd5b818501915085601f830112611ab857600080fd5b813581811115611ac757600080fd5b8660208260051b8501011115611adc57600080fd5b60209290920196919550909350505050565b60008060208385031215611b0157600080fd5b823567ffffffffffffffff80821115611b1957600080fd5b818501915085601f830112611b2d57600080fd5b813581811115611b3c57600080fd5b8660208260071b8501011115611adc57600080fd5b60006020808385031215611b6457600080fd5b825167ffffffffffffffff80821115611b7c57600080fd5b818501915085601f830112611b9057600080fd5b815181811115611ba257611ba2611f89565b8060051b604051601f19603f83011681018181108582111715611bc757611bc7611f89565b604052828152858101935084860182860187018a1015611be657600080fd5b600095505b83861015611c09578051855260019590950194938601938601611beb565b5098975050505050505050565b600060208284031215611c2857600080fd5b813561105081611fb7565b600060208284031215611c4557600080fd5b815161105081611fb7565b600080600060608486031215611c6557600080fd5b8335611c7081611f9f565b92506020840135611c8081611f9f565b929592945050506040919091013590565b600060208284031215611ca357600080fd5b5035919050565b600060208284031215611cbc57600080fd5b5051919050565b60008060408385031215611cd657600080fd5b823591506020830135611ce881611f9f565b809150509250929050565b600080600060608486031215611d0857600080fd5b833592506020840135611c8081611f9f565b60008060408385031215611d2d57600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015611d755781516001600160a01b031687529582019590820190600101611d50565b509495945050505050565b60008251611d92818460208701611f16565b9190910192915050565b6020815260008251806020840152611dbb816040850160208701611f16565b601f01601f19169190910160400192915050565b60208082526021908201527f506c65617365206465706f736974206d6f7265207468616e203020746f6b656e6040820152607360f81b606082015260800190565b60208082526021908201527f4465706f73697473206172656e27742063757272656e746c7920656e61626c656040820152601960fa1b606082015260800190565b8281526040602082015260006117a46040830184611d3c565b85815284602082015260a060408201526000611e8960a0830186611d3c565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611eb957611eb9611f5d565b500190565b600082611edb57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611efa57611efa611f5d565b500290565b600082821015611f1157611f11611f5d565b500390565b60005b83811015611f31578181015183820152602001611f19565b838111156111565750506000910152565b6000600019821415611f5657611f56611f5d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611fb457600080fd5b50565b8015158114611fb457600080fdfea2646970667358221220aefac8ae5fa4b68cdf502bcc2d045424b27149125f54fc218ec03a5f1524004964736f6c634300080500330000000000000000000000003d69b9b8acb96e7a7c46b1b96379339ceaace1040000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d