0x60806040526004361061026a5760003560e01c806359136fa511610144578063a457c2d7116100b6578063b6f7f6811161007a578063b6f7f6811461075b578063c02466681461077b578063dd62ed3e1461079b578063e2f45605146107e1578063f2fde38b146107f7578063f9d0831a1461081757600080fd5b8063a457c2d7146106ac578063a8a69b9d146106cc578063a9059cbb14610705578063aa4bde2814610725578063afa4f3b21461073b57600080fd5b806371fc46881161010857806371fc4688146105f957806375f0a874146106195780638da5cb5b146106395780638ea5220f14610657578063929f13601461067757806395d89b411461069757600080fd5b806359136fa51461056257806364c98c4414610578578063702509fd1461059857806370a08231146105ae578063715018a6146105e457600080fd5b806327a14fc2116101dd57806339509351116101a1578063395093511461049457806347062402146104b457806349bd5a5e146104ca5780634ada218b146104ea5780634fbee1931461050957806356a6cabf1461054257600080fd5b806327a14fc2146104085780632a6c7dba146104285780632b14ca56146104485780632ba86bf21461045e578063313ce5671461047857600080fd5b80631694505e1161022f5780631694505e1461032857806318160ddd1461036057806318d9ceae146103755780631d933a4a146103ae57806321a9d82a146103ce57806323b872dd146103e857600080fd5b806299d386146102765780630105d0fd1461028d57806306fdde03146102b6578063095ea7b3146102d8578063150c880c1461030857600080fd5b3661027157005b600080fd5b34801561028257600080fd5b5061028b610837565b005b34801561029957600080fd5b506102a360155481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f64565b3480156102e457600080fd5b506102f86102f3366004611fc7565b61090d565b60405190151581526020016102ad565b34801561031457600080fd5b5061028b610323366004612001565b610924565b34801561033457600080fd5b50600654610348906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561036c57600080fd5b506002546102a3565b34801561038157600080fd5b506102f861039036600461203a565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156103ba57600080fd5b5061028b6103c936600461205e565b6109ee565b3480156103da57600080fd5b506011546102f89060ff1681565b3480156103f457600080fd5b506102f8610403366004612077565b610a54565b34801561041457600080fd5b5061028b61042336600461205e565b610b05565b34801561043457600080fd5b5061028b6104433660046120b8565b610c04565b34801561045457600080fd5b506102a3600a5481565b34801561046a57600080fd5b506014546102f89060ff1681565b34801561048457600080fd5b50604051601281526020016102ad565b3480156104a057600080fd5b506102f86104af366004611fc7565b610ce3565b3480156104c057600080fd5b506102a360095481565b3480156104d657600080fd5b50600754610348906001600160a01b031681565b3480156104f657600080fd5b50600f546102f890610100900460ff1681565b34801561051557600080fd5b506102f861052436600461203a565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561054e57600080fd5b5061028b61055d3660046120b8565b610d1f565b34801561056e57600080fd5b506102a360165481565b34801561058457600080fd5b5061028b61059336600461205e565b610e03565b3480156105a457600080fd5b506102a3600b5481565b3480156105ba57600080fd5b506102a36105c936600461203a565b6001600160a01b031660009081526020819052604090205490565b3480156105f057600080fd5b5061028b610e62565b34801561060557600080fd5b5061028b61061436600461205e565b610ed6565b34801561062557600080fd5b50600d54610348906001600160a01b031681565b34801561064557600080fd5b506005546001600160a01b0316610348565b34801561066357600080fd5b50600c54610348906001600160a01b031681565b34801561068357600080fd5b5061028b610692366004612001565b610f35565b3480156106a357600080fd5b506102cb610ff7565b3480156106b857600080fd5b506102f86106c7366004611fc7565b611006565b3480156106d857600080fd5b506102f86106e736600461203a565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561071157600080fd5b506102f8610720366004611fc7565b61109f565b34801561073157600080fd5b506102a360125481565b34801561074757600080fd5b5061028b61075636600461205e565b6110ac565b34801561076757600080fd5b5061028b6107763660046120d5565b61110b565b34801561078757600080fd5b5061028b610796366004612001565b61127a565b3480156107a757600080fd5b506102a36107b63660046120f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107ed57600080fd5b506102a3600e5481565b34801561080357600080fd5b5061028b61081236600461203a565b61137f565b34801561082357600080fd5b5061028b61083236600461203a565b61146a565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190612125565b60405180910390fd5b600f805461ff001916610100179055565b60606003805461088a9061215a565b80601f01602080910402602001604051908101604052809291908181526020018280546108b69061215a565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b600061091a338484611614565b5060015b92915050565b6005546001600160a01b0316331461094e5760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526013602052604090205481151560ff90911615150361098e5760405162461bcd60e51b815260040161086190612194565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610a185760405162461bcd60e51b815260040161086190612125565b600a8190556040518181527f7d59573ec4acab62b908b5c1cde109eb12273d011506abaa850256636a42d54a906020015b60405180910390a150565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610aef5782811015610ae25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610861565b610aef8533858403611614565b610afa858585611738565b506001949350505050565b6005546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161086190612125565b6064610b3d6012600a6122d2565b600254610b4a91906122e1565b610b5491906122e1565b811015610bb95760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610861565b610bc56012600a6122d2565b610bcf9082612303565b60128190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb594290602001610a49565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161086190612125565b60115460ff16151581151503610c9c5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b6064820152608401610861565b6011805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610a49565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091a918590610d1a90869061231a565b611614565b6005546001600160a01b03163314610d495760405162461bcd60e51b815260040161086190612125565b60145460ff16151581151503610dbc5760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b6064820152608401610861565b6014805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf90602001610a49565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b815260040161086190612125565b600b8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610a49565b6005546001600160a01b03163314610e8c5760405162461bcd60e51b815260040161086190612125565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f005760405162461bcd60e51b815260040161086190612125565b60098190556040518181527fa480a3a15a511fbdc37ae77ae3f490e03ab3688adde11456ce779e6c1e0abaa290602001610a49565b6005546001600160a01b03163314610f5f5760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503610f9f5760405162461bcd60e51b815260040161086190612194565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c91016109e2565b60606004805461088a9061215a565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610861565b6110953385858403611614565b5060019392505050565b600061091a338484611738565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161086190612125565b600e8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610a49565b6005546001600160a01b031633146111355760405162461bcd60e51b815260040161086190612125565b6103e86111446012600a6122d2565b60025461115191906122e1565b61115b91906122e1565b821015801561118f57506103e86111746012600a6122d2565b60025461118191906122e1565b61118b91906122e1565b8110155b6112015760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610861565b61120d6012600a6122d2565b6112179083612303565b6015556112266012600a6122d2565b6112309082612303565b60168190556015546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb1319261126e928252602082015260400190565b60405180910390a15050565b6005546001600160a01b031633146112a45760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526008602052604090205481151560ff9091161515036113275760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610861565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016109e2565b6005546001600160a01b031633146113a95760405162461bcd60e51b815260040161086190612125565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114945760405162461bcd60e51b815260040161086190612125565b306001600160a01b038216036115125760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e730000000000000000006064820152608401610861565b6001600160a01b03811661152d5761152a3347611b65565b50565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a919061232d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e9190612346565b50505050565b6001600160a01b0383166116765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166116d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175e5760405162461bcd60e51b815260040161086190612363565b6001600160a01b0382166117845760405162461bcd60e51b8152600401610861906123a8565b600f54610100900460ff16806117b257506001600160a01b03831660009081526008602052604090205460ff165b806117d557506001600160a01b03821660009081526008602052604090205460ff165b6118215760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610861565b8060000361183a5761183583836000611c7e565b505050565b60145460ff161561191c576007546001600160a01b038481169116148061186e57506007546001600160a01b038381169116145b801561189357506001600160a01b03831660009081526013602052604090205460ff16155b80156118b857506001600160a01b03821660009081526013602052604090205460ff16155b1561191c576007546001600160a01b03908116908416036118fa576015548111156118f55760405162461bcd60e51b8152600401610861906123eb565b61191c565b60165481111561191c5760405162461bcd60e51b8152600401610861906123eb565b30600090815260208190526040902054600e54811080159081906119435750600f5460ff16155b801561195c57506007546001600160a01b038581169116145b1561198257600f805460ff1916600117905561197782611dd2565b600f805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff16806119c157506001600160a01b03851660009081526008602052604090205460ff165b806119ce5750600f5460ff165b156119db57506000611a1e565b6007546001600160a01b03908116908716036119fa5750600954611a1e565b6007546001600160a01b0390811690861603611a195750600a54611a1e565b50600b545b8015611a575760006064611a328387612303565b611a3c91906122e1565b9050611a488186612448565b9450611a55873083611c7e565b505b60115460ff1615611b52576001600160a01b03861660009081526010602052604090205460ff16158015611aa457506001600160a01b03851660009081526010602052604090205460ff16155b8015611abe57506007546001600160a01b03868116911614155b15611b52576001600160a01b038516600090815260208190526040902054601254611ae9868361231a565b1115611b505760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b6064820152608401610861565b505b611b5d868686611c7e565b505050505050565b80471015611bb55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610861565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c02576040519150601f19603f3d011682016040523d82523d6000602084013e611c07565b606091505b50509050806118355760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610861565b6001600160a01b038316611ca45760405162461bcd60e51b815260040161086190612363565b6001600160a01b038216611cca5760405162461bcd60e51b8152600401610861906123a8565b6001600160a01b03831660009081526020819052604090205481811015611d425760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610861565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d7990849061231a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc591815260200190565b60405180910390a361160e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0757611e0761245b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190612471565b81600181518110611e9757611e9761245b565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611edd90859060009086903090429060040161248e565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b5047925060009150611f2090506003836122e1565b90506000611f2e8284612448565b600c54909150611f47906001600160a01b031683611b65565b600d54611f5d906001600160a01b031682611b65565b5050505050565b600060208083528351808285015260005b81811015611f9157858101830151858201604001528201611f75565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152a57600080fd5b60008060408385031215611fda57600080fd5b8235611fe581611fb2565b946020939093013593505050565b801515811461152a57600080fd5b6000806040838503121561201457600080fd5b823561201f81611fb2565b9150602083013561202f81611ff3565b809150509250929050565b60006020828403121561204c57600080fd5b813561205781611fb2565b9392505050565b60006020828403121561207057600080fd5b5035919050565b60008060006060848603121561208c57600080fd5b833561209781611fb2565b925060208401356120a781611fb2565b929592945050506040919091013590565b6000602082840312156120ca57600080fd5b813561205781611ff3565b600080604083850312156120e857600080fd5b50508035926020909101359150565b6000806040838503121561210a57600080fd5b823561211581611fb2565b9150602083013561202f81611fb2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061216e57607f821691505b60208210810361218e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561222957816000190482111561220f5761220f6121d8565b8085161561221c57918102915b93841c93908002906121f3565b509250929050565b6000826122405750600161091e565b8161224d5750600061091e565b8160018114612263576002811461226d57612289565b600191505061091e565b60ff84111561227e5761227e6121d8565b50506001821b61091e565b5060208310610133831016604e8410600b84101617156122ac575081810a61091e565b6122b683836121ee565b80600019048211156122ca576122ca6121d8565b029392505050565b600061205760ff841683612231565b6000826122fe57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761091e5761091e6121d8565b8082018082111561091e5761091e6121d8565b60006020828403121561233f57600080fd5b5051919050565b60006020828403121561235857600080fd5b815161205781611ff3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b8181038181111561091e5761091e6121d8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248357600080fd5b815161205781611fb2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124de5784516001600160a01b0316835293830193918301916001016124b9565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122058377e7038125b2f9cdcc32533f1f2385bd9dd2c11c51312d0c6794bed51b73464736f6c63430008120033
0x60806040523480156200001157600080fd5b506040518060400160405280600b81526020016a4d65676174726f6e20414960a81b815250604051806040016040528060058152602001644d4547414960d81b815250816003908162000065919062000888565b50600462000074828262000888565b505050600062000089620005ca60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000136573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015c919062000954565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d0919062000954565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000954565b600680546001600160a01b038086166001600160a01b03199283168117909355600780549185169190921617905590915062000285903090600019620005ce565b605a6009819055600a556001600b819055600c80546001600160a01b031990811673b1ac981955e0ac88c2a1f8bf2226758a9edabad317909155600d80549091167328bc4cfdfd35d434712653c0c10ac394d50aa0a91790556011805460ff19169091179055620002f4601290565b6200030190600a62000a9b565b6200031090621e848062000aac565b6012556014805460ff1916600117905562000329601290565b6200033690600a62000a9b565b6200034590620f424062000aac565b601555620003566012600a62000a9b565b6200036590620f424062000aac565b601655600160136000620003816005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260139093528183208054851660019081179091557f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c8054861682179055600c54821684528284208054861682179055600d549091168352908220805490931681179092556010906200042c6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260109093528183208054851660019081179091557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054861682179055600c54821684528284208054861682179055600d54909116835290822080549093168117909255600890620004d76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260089093528183208054851660019081179091557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342998054861682179055600c54821684528284208054861682179055600d54909116835291208054909216179055620005a4620005806005546001600160a01b031690565b6200058e6012600a62000a9b565b6200059e906306422c4062000aac565b620006fa565b611388620005b160025490565b620005bd919062000ac6565b600e555062000aff915050565b3390565b6001600160a01b038316620006365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200062d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620007525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200062d565b806002600082825462000766919062000ae9565b90915550506001600160a01b038216600090815260208190526040812080548392906200079590849062000ae9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200080f57607f821691505b6020821081036200083057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620007df57600081815260208120601f850160051c810160208610156200085f5750805b601f850160051c820191505b8181101562000880578281556001016200086b565b505050505050565b81516001600160401b03811115620008a457620008a4620007e4565b620008bc81620008b58454620007fa565b8462000836565b602080601f831160018114620008f45760008415620008db5750858301515b600019600386901b1c1916600185901b17855562000880565b600085815260208120601f198616915b82811015620009255788860151825594840194600190910190840162000904565b5085821015620009445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200096757600080fd5b81516001600160a01b03811681146200097f57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009dd578160001904821115620009c157620009c162000986565b80851615620009cf57918102915b93841c9390800290620009a1565b509250929050565b600082620009f65750600162000a95565b8162000a055750600062000a95565b816001811462000a1e576002811462000a295762000a49565b600191505062000a95565b60ff84111562000a3d5762000a3d62000986565b50506001821b62000a95565b5060208310610133831016604e8410600b841016171562000a6e575081810a62000a95565b62000a7a83836200099c565b806000190482111562000a915762000a9162000986565b0290505b92915050565b60006200097f60ff841683620009e5565b808202811582820484141762000a955762000a9562000986565b60008262000ae457634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000a955762000a9562000986565b6125358062000b0f6000396000f3fe60806040526004361061026a5760003560e01c806359136fa511610144578063a457c2d7116100b6578063b6f7f6811161007a578063b6f7f6811461075b578063c02466681461077b578063dd62ed3e1461079b578063e2f45605146107e1578063f2fde38b146107f7578063f9d0831a1461081757600080fd5b8063a457c2d7146106ac578063a8a69b9d146106cc578063a9059cbb14610705578063aa4bde2814610725578063afa4f3b21461073b57600080fd5b806371fc46881161010857806371fc4688146105f957806375f0a874146106195780638da5cb5b146106395780638ea5220f14610657578063929f13601461067757806395d89b411461069757600080fd5b806359136fa51461056257806364c98c4414610578578063702509fd1461059857806370a08231146105ae578063715018a6146105e457600080fd5b806327a14fc2116101dd57806339509351116101a1578063395093511461049457806347062402146104b457806349bd5a5e146104ca5780634ada218b146104ea5780634fbee1931461050957806356a6cabf1461054257600080fd5b806327a14fc2146104085780632a6c7dba146104285780632b14ca56146104485780632ba86bf21461045e578063313ce5671461047857600080fd5b80631694505e1161022f5780631694505e1461032857806318160ddd1461036057806318d9ceae146103755780631d933a4a146103ae57806321a9d82a146103ce57806323b872dd146103e857600080fd5b806299d386146102765780630105d0fd1461028d57806306fdde03146102b6578063095ea7b3146102d8578063150c880c1461030857600080fd5b3661027157005b600080fd5b34801561028257600080fd5b5061028b610837565b005b34801561029957600080fd5b506102a360155481565b6040519081526020015b60405180910390f35b3480156102c257600080fd5b506102cb61087b565b6040516102ad9190611f64565b3480156102e457600080fd5b506102f86102f3366004611fc7565b61090d565b60405190151581526020016102ad565b34801561031457600080fd5b5061028b610323366004612001565b610924565b34801561033457600080fd5b50600654610348906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b34801561036c57600080fd5b506002546102a3565b34801561038157600080fd5b506102f861039036600461203a565b6001600160a01b031660009081526013602052604090205460ff1690565b3480156103ba57600080fd5b5061028b6103c936600461205e565b6109ee565b3480156103da57600080fd5b506011546102f89060ff1681565b3480156103f457600080fd5b506102f8610403366004612077565b610a54565b34801561041457600080fd5b5061028b61042336600461205e565b610b05565b34801561043457600080fd5b5061028b6104433660046120b8565b610c04565b34801561045457600080fd5b506102a3600a5481565b34801561046a57600080fd5b506014546102f89060ff1681565b34801561048457600080fd5b50604051601281526020016102ad565b3480156104a057600080fd5b506102f86104af366004611fc7565b610ce3565b3480156104c057600080fd5b506102a360095481565b3480156104d657600080fd5b50600754610348906001600160a01b031681565b3480156104f657600080fd5b50600f546102f890610100900460ff1681565b34801561051557600080fd5b506102f861052436600461203a565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561054e57600080fd5b5061028b61055d3660046120b8565b610d1f565b34801561056e57600080fd5b506102a360165481565b34801561058457600080fd5b5061028b61059336600461205e565b610e03565b3480156105a457600080fd5b506102a3600b5481565b3480156105ba57600080fd5b506102a36105c936600461203a565b6001600160a01b031660009081526020819052604090205490565b3480156105f057600080fd5b5061028b610e62565b34801561060557600080fd5b5061028b61061436600461205e565b610ed6565b34801561062557600080fd5b50600d54610348906001600160a01b031681565b34801561064557600080fd5b506005546001600160a01b0316610348565b34801561066357600080fd5b50600c54610348906001600160a01b031681565b34801561068357600080fd5b5061028b610692366004612001565b610f35565b3480156106a357600080fd5b506102cb610ff7565b3480156106b857600080fd5b506102f86106c7366004611fc7565b611006565b3480156106d857600080fd5b506102f86106e736600461203a565b6001600160a01b031660009081526010602052604090205460ff1690565b34801561071157600080fd5b506102f8610720366004611fc7565b61109f565b34801561073157600080fd5b506102a360125481565b34801561074757600080fd5b5061028b61075636600461205e565b6110ac565b34801561076757600080fd5b5061028b6107763660046120d5565b61110b565b34801561078757600080fd5b5061028b610796366004612001565b61127a565b3480156107a757600080fd5b506102a36107b63660046120f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107ed57600080fd5b506102a3600e5481565b34801561080357600080fd5b5061028b61081236600461203a565b61137f565b34801561082357600080fd5b5061028b61083236600461203a565b61146a565b6005546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190612125565b60405180910390fd5b600f805461ff001916610100179055565b60606003805461088a9061215a565b80601f01602080910402602001604051908101604052809291908181526020018280546108b69061215a565b80156109035780601f106108d857610100808354040283529160200191610903565b820191906000526020600020905b8154815290600101906020018083116108e657829003601f168201915b5050505050905090565b600061091a338484611614565b5060015b92915050565b6005546001600160a01b0316331461094e5760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526013602052604090205481151560ff90911615150361098e5760405162461bcd60e51b815260040161086190612194565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6005546001600160a01b03163314610a185760405162461bcd60e51b815260040161086190612125565b600a8190556040518181527f7d59573ec4acab62b908b5c1cde109eb12273d011506abaa850256636a42d54a906020015b60405180910390a150565b6001600160a01b03831660009081526001602090815260408083203384529091528120546000198114610aef5782811015610ae25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610861565b610aef8533858403611614565b610afa858585611738565b506001949350505050565b6005546001600160a01b03163314610b2f5760405162461bcd60e51b815260040161086190612125565b6064610b3d6012600a6122d2565b600254610b4a91906122e1565b610b5491906122e1565b811015610bb95760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060448201526c6c6f776572207468616e20312560981b6064820152608401610861565b610bc56012600a6122d2565b610bcf9082612303565b60128190556040519081527f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb594290602001610a49565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b815260040161086190612125565b60115460ff16151581151503610c9c5760405162461bcd60e51b815260206004820152602d60248201527f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060448201526c746f207468617420737461746560981b6064820152608401610861565b6011805460ff191682151590811790915560405160ff909116151581527f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f190602001610a49565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161091a918590610d1a90869061231a565b611614565b6005546001600160a01b03163314610d495760405162461bcd60e51b815260040161086190612125565b60145460ff16151581151503610dbc5760405162461bcd60e51b815260206004820152603260248201527f4d6178207472616e73616374696f6e206c696d697420697320616c72656164796044820152712073657420746f207468617420737461746560701b6064820152608401610861565b6014805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf90602001610a49565b6005546001600160a01b03163314610e2d5760405162461bcd60e51b815260040161086190612125565b600b8190556040518181527f925fa17eb1bbdac8e18750276099046910212e51b0d15da024f67ce9fb25cc9b90602001610a49565b6005546001600160a01b03163314610e8c5760405162461bcd60e51b815260040161086190612125565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f005760405162461bcd60e51b815260040161086190612125565b60098190556040518181527fa480a3a15a511fbdc37ae77ae3f490e03ab3688adde11456ce779e6c1e0abaa290602001610a49565b6005546001600160a01b03163314610f5f5760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503610f9f5760405162461bcd60e51b815260040161086190612194565b6001600160a01b038216600081815260106020908152604091829020805460ff191685151590811790915591519182527f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c91016109e2565b60606004805461088a9061215a565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610861565b6110953385858403611614565b5060019392505050565b600061091a338484611738565b6005546001600160a01b031633146110d65760405162461bcd60e51b815260040161086190612125565b600e8190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b14590602001610a49565b6005546001600160a01b031633146111355760405162461bcd60e51b815260040161086190612125565b6103e86111446012600a6122d2565b60025461115191906122e1565b61115b91906122e1565b821015801561118f57506103e86111746012600a6122d2565b60025461118191906122e1565b61118b91906122e1565b8110155b6112015760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610861565b61120d6012600a6122d2565b6112179083612303565b6015556112266012600a6122d2565b6112309082612303565b60168190556015546040517f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb1319261126e928252602082015260400190565b60405180910390a15050565b6005546001600160a01b031633146112a45760405162461bcd60e51b815260040161086190612125565b6001600160a01b03821660009081526008602052604090205481151560ff9091161515036113275760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610861565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016109e2565b6005546001600160a01b031633146113a95760405162461bcd60e51b815260040161086190612125565b6001600160a01b03811661140e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146114945760405162461bcd60e51b815260040161086190612125565b306001600160a01b038216036115125760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e730000000000000000006064820152608401610861565b6001600160a01b03811661152d5761152a3347611b65565b50565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159a919061232d565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156115ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160e9190612346565b50505050565b6001600160a01b0383166116765760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166116d75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175e5760405162461bcd60e51b815260040161086190612363565b6001600160a01b0382166117845760405162461bcd60e51b8152600401610861906123a8565b600f54610100900460ff16806117b257506001600160a01b03831660009081526008602052604090205460ff165b806117d557506001600160a01b03821660009081526008602052604090205460ff165b6118215760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610861565b8060000361183a5761183583836000611c7e565b505050565b60145460ff161561191c576007546001600160a01b038481169116148061186e57506007546001600160a01b038381169116145b801561189357506001600160a01b03831660009081526013602052604090205460ff16155b80156118b857506001600160a01b03821660009081526013602052604090205460ff16155b1561191c576007546001600160a01b03908116908416036118fa576015548111156118f55760405162461bcd60e51b8152600401610861906123eb565b61191c565b60165481111561191c5760405162461bcd60e51b8152600401610861906123eb565b30600090815260208190526040902054600e54811080159081906119435750600f5460ff16155b801561195c57506007546001600160a01b038581169116145b1561198257600f805460ff1916600117905561197782611dd2565b600f805460ff191690555b6001600160a01b03851660009081526008602052604081205460ff16806119c157506001600160a01b03851660009081526008602052604090205460ff165b806119ce5750600f5460ff165b156119db57506000611a1e565b6007546001600160a01b03908116908716036119fa5750600954611a1e565b6007546001600160a01b0390811690861603611a195750600a54611a1e565b50600b545b8015611a575760006064611a328387612303565b611a3c91906122e1565b9050611a488186612448565b9450611a55873083611c7e565b505b60115460ff1615611b52576001600160a01b03861660009081526010602052604090205460ff16158015611aa457506001600160a01b03851660009081526010602052604090205460ff16155b8015611abe57506007546001600160a01b03868116911614155b15611b52576001600160a01b038516600090815260208190526040902054601254611ae9868361231a565b1115611b505760405162461bcd60e51b815260206004820152603060248201527f4d617857616c6c65743a20526563697069656e7420657863656564732074686560448201526f081b585e15d85b1b195d105b5bdd5b9d60821b6064820152608401610861565b505b611b5d868686611c7e565b505050505050565b80471015611bb55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610861565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c02576040519150601f19603f3d011682016040523d82523d6000602084013e611c07565b606091505b50509050806118355760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610861565b6001600160a01b038316611ca45760405162461bcd60e51b815260040161086190612363565b6001600160a01b038216611cca5760405162461bcd60e51b8152600401610861906123a8565b6001600160a01b03831660009081526020819052604090205481811015611d425760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610861565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d7990849061231a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dc591815260200190565b60405180910390a361160e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0757611e0761245b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190612471565b81600181518110611e9757611e9761245b565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611edd90859060009086903090429060040161248e565b600060405180830381600087803b158015611ef757600080fd5b505af1158015611f0b573d6000803e3d6000fd5b5047925060009150611f2090506003836122e1565b90506000611f2e8284612448565b600c54909150611f47906001600160a01b031683611b65565b600d54611f5d906001600160a01b031682611b65565b5050505050565b600060208083528351808285015260005b81811015611f9157858101830151858201604001528201611f75565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152a57600080fd5b60008060408385031215611fda57600080fd5b8235611fe581611fb2565b946020939093013593505050565b801515811461152a57600080fd5b6000806040838503121561201457600080fd5b823561201f81611fb2565b9150602083013561202f81611ff3565b809150509250929050565b60006020828403121561204c57600080fd5b813561205781611fb2565b9392505050565b60006020828403121561207057600080fd5b5035919050565b60008060006060848603121561208c57600080fd5b833561209781611fb2565b925060208401356120a781611fb2565b929592945050506040919091013590565b6000602082840312156120ca57600080fd5b813561205781611ff3565b600080604083850312156120e857600080fd5b50508035926020909101359150565b6000806040838503121561210a57600080fd5b823561211581611fb2565b9150602083013561202f81611fb2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061216e57607f821691505b60208210810361218e57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526024908201527f4163636f756e7420697320616c72656164792073657420746f207468617420736040820152637461746560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561222957816000190482111561220f5761220f6121d8565b8085161561221c57918102915b93841c93908002906121f3565b509250929050565b6000826122405750600161091e565b8161224d5750600061091e565b8160018114612263576002811461226d57612289565b600191505061091e565b60ff84111561227e5761227e6121d8565b50506001821b61091e565b5060208310610133831016604e8410600b84101617156122ac575081810a61091e565b6122b683836121ee565b80600019048211156122ca576122ca6121d8565b029392505050565b600061205760ff841683612231565b6000826122fe57634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761091e5761091e6121d8565b8082018082111561091e5761091e6121d8565b60006020828403121561233f57600080fd5b5051919050565b60006020828403121561235857600080fd5b815161205781611ff3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252603b908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000606082015260800190565b8181038181111561091e5761091e6121d8565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561248357600080fd5b815161205781611fb2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124de5784516001600160a01b0316835293830193918301916001016124b9565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122058377e7038125b2f9cdcc32533f1f2385bd9dd2c11c51312d0c6794bed51b73464736f6c63430008120033