0x608060405234801561001057600080fd5b50614100806100206000396000f3fe60806040526004361061023b5760003560e01c80638da5cb5b1161012e578063bec6f63b116100ab578063e8a3d4851161006f578063e8a3d485146106c2578063e985e9c5146106d7578063f2fde38b14610720578063fae9261214610740578063fbbaeb981461076057600080fd5b8063bec6f63b14610622578063c87b56dd14610642578063ca6d56dc14610662578063db8da05c14610682578063e0f095c1146106a257600080fd5b8063a22cb465116100f2578063a22cb46514610582578063a230c524146105a2578063b6683b66146105c2578063b88d4fde146105e2578063b9925b191461060257600080fd5b80638da5cb5b146104d257806390657147146104f05780639338bb5d1461051057806395d89b411461054d578063977db86d1461056257600080fd5b8063267292f5116101bc5780635f682525116101805780635f6825251461042d5780636352211e1461045d5780636d38e9611461047d57806370a082311461049d578063715018a6146104bd57600080fd5b8063267292f51461039f57806329fc6bae146103bf57806342842e0e146103da57806342966c68146103fa5780634e8bd8111461041a57600080fd5b80630b1ca49a116102035780630b1ca49a1461031157806318160ddd146103315780631d80009a1461035457806323b872dd1461036a57806324600fc31461038a57600080fd5b806301ffc9a71461024057806302ee14931461027557806306fdde0314610297578063081812fc146102b9578063095ea7b3146102f1575b600080fd5b34801561024c57600080fd5b5061026061025b366004613649565b610780565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b50610295610290366004613616565b6107d2565b005b3480156102a357600080fd5b506102ac610852565b60405161026c9190613adb565b3480156102c557600080fd5b506102d96102d4366004613631565b6108e4565b6040516001600160a01b03909116815260200161026c565b3480156102fd57600080fd5b5061029561030c3660046134ec565b61090b565b34801561031d57600080fd5b5061029561032c366004613313565b610a21565b34801561033d57600080fd5b50610346610ae4565b60405190815260200161026c565b34801561036057600080fd5b5061034660fc5481565b34801561037657600080fd5b5061029561038536600461335f565b610af5565b34801561039657600080fd5b50610295610b0b565b3480156103ab57600080fd5b506103466103ba366004613681565b610b52565b3480156103cb57600080fd5b50610104546102609060ff1681565b3480156103e657600080fd5b506102956103f536600461335f565b610bfe565b34801561040657600080fd5b50610295610415366004613631565b610c24565b610346610428366004613554565b610c6f565b34801561043957600080fd5b5061044d6104483660046137d9565b6110cf565b60405161026c9493929190613cad565b34801561046957600080fd5b506102d9610478366004613631565b611227565b34801561048957600080fd5b506102956104983660046136b4565b611287565b3480156104a957600080fd5b506103466104b8366004613313565b6113fd565b3480156104c957600080fd5b50610295611483565b3480156104de57600080fd5b5060c9546001600160a01b03166102d9565b3480156104fc57600080fd5b5061029561050b36600461347c565b611497565b34801561051c57600080fd5b506101005461010254610103546101015460408051948552602085019390935291830152606082015260800161026c565b34801561055957600080fd5b506102ac61165a565b34801561056e57600080fd5b5061026061057d366004613515565b611669565b34801561058e57600080fd5b5061029561059d366004613453565b6116ed565b3480156105ae57600080fd5b506102606105bd366004613313565b6116f8565b3480156105ce57600080fd5b506102956105dd3660046135fc565b611716565b3480156105ee57600080fd5b506102956105fd36600461339a565b611751565b34801561060e57600080fd5b5061029561061d366004613631565b611768565b34801561062e57600080fd5b5061034661063d36600461359d565b611794565b34801561064e57600080fd5b506102ac61065d366004613631565b611a41565b34801561066e57600080fd5b5061029561067d366004613313565b611b3d565b34801561068e57600080fd5b5061029561069d366004613822565b611bff565b3480156106ae57600080fd5b506102956106bd366004613412565b611c8c565b3480156106ce57600080fd5b506102ac611d0d565b3480156106e357600080fd5b506102606106f236600461332d565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b34801561072c57600080fd5b5061029561073b366004613313565b611d9b565b34801561074c57600080fd5b5061029561075b366004613313565b611e11565b34801561076c57600080fd5b5061029561077b366004613681565b611ea0565b60006001600160e01b031982166380ac58cd60e01b14806107b157506001600160e01b03198216635b5e139f60e01b145b806107cc57506301ffc9a760e01b6001600160e01b03198316145b92915050565b336107dc816116f8565b6108015760405162461bcd60e51b81526004016107f890613c6b565b60405180910390fd5b610521805460ff19168415159081179091556040805184815260208101929092527f437fc78180d6ef2288df40f6c8232fdb7b8a083d5c07280947af77ff7f366fed910160405180910390a1505050565b6060606580546108619061401c565b80601f016020809104026020016040519081016040528092919081815260200182805461088d9061401c565b80156108da5780601f106108af576101008083540402835291602001916108da565b820191906000526020600020905b8154815290600101906020018083116108bd57829003601f168201915b5050505050905090565b60006108ef8261201e565b506000908152606960205260409020546001600160a01b031690565b600061091682611227565b9050806001600160a01b0316836001600160a01b031614156109845760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016107f8565b336001600160a01b03821614806109a057506109a081336106f2565b610a125760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016107f8565b610a1c838361207d565b505050565b610a296120eb565b610a32816116f8565b610a8c5760405162461bcd60e51b815260206004820152602560248201527f41646d696e4163636573733a204e6f74206d656d626572206f662077686974656044820152643634b9ba1760d91b60648201526084016107f8565b6001600160a01b038116600081815260fb6020908152604091829020805460ff1916905590519182527f6e76fb4c77256006d9c38ec7d82b45a8c8f3c27b1d6766fffc42dfb8de68449291015b60405180910390a150565b6000610af061051f5490565b905090565b610b00838383612145565b610a1c838383612266565b33610b15816116f8565b610b315760405162461bcd60e51b81526004016107f890613c6b565b610b4f610b4660c9546001600160a01b031690565b47614e20612297565b50565b6000806105268484604051610b6892919061391a565b9081526020016040518091039020549050610b9a816000908152606760205260409020546001600160a01b0316151590565b610bf75760405162461bcd60e51b815260206004820152602860248201527f436f6c6c65637461626c654552433732313a204e6f6e206e6f6e657869737465604482015267373a103a37b5b2b760c11b60648201526084016107f8565b9392505050565b610c09838383612145565b610a1c83838360405180602001604052806000815250612319565b33610c2e816116f8565b610c4a5760405162461bcd60e51b81526004016107f890613c6b565b600082815261052560205260408120610c6291613101565b610c6b8261234b565b5050565b6000610c7961238b565b610c81610ae4565b8484610c8c336113fd565b85426101025410610cdf5760405162461bcd60e51b815260206004820181905260248201527f5075626c69634d696e743a204d696e74206e6f7420737461727465642079657460448201526064016107f8565b426101035411610d315760405162461bcd60e51b815260206004820152601760248201527f5075626c69634d696e743a204d696e7420656e6465642000000000000000000060448201526064016107f8565b60ff54610d3e8287613e18565b1115610d9c5760405162461bcd60e51b815260206004820152602760248201527f5075626c69634d696e743a20416c6c20746f6b656e732068617665206265656e604482015266081b5a5b9d195960ca1b60648201526084016107f8565b6101045460ff16610dae576001610db8565b610db88484611669565b610e165760405162461bcd60e51b815260206004820152602960248201527f5075626c69634d696e743a20596f7520617265206e6f74206f6e2074686520416044820152681b1b1bddc8131a5cdd60ba1b60648201526084016107f8565b610100541580610e32575061010054610e2f9034613e55565b81145b610e7e5760405162461bcd60e51b815260206004820181905260248201527f5075626c69634d696e743a20416d6f756e74206d7573742062652076616c696460448201526064016107f8565b60018110158015610e9b575061010154610e988284613e18565b11155b610ee75760405162461bcd60e51b815260206004820152601d60248201527f5075626c69634d696e743a20496e61766c6964204e465420636f756e7400000060448201526064016107f8565b6000876001600160401b03811115610f0f57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610f38578160200160208202803683370190505b50905060005b88811015610fac57610f5561051f80546001019055565b6000610f6161051f5490565b9050610f6d33826123e7565b80838381518110610f8e57634e487b7160e01b600052603260045260246000fd5b60209081029190910101525080610fa481614057565b915050610f3e565b5061052054610fc5906001600160a01b031660016116ed565b60005b610524548110156110845760006105248281548110610ff757634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160010154905064174876e800348261101d9190613f76565b6110279190613e55565b9050611071610524838154811061104e57634e487b7160e01b600052603260045260246000fd5b60009182526020909120600490910201546001600160a01b031682614e20612297565b508061107c81614057565b915050610fc8565b507f61745f0f97ef1979fa0ec0ce6a10ceb97b524b5b8e4c28d12fd074dee9bb523b816040516110b49190613a1e565b60405180910390a15195505050505050610bf760016104ed55565b6110f5604051806060016040528060001515815260200160008152602001600081525090565b6000848152610525602090815260408083208151606081810184526105215460ff161515825261052254828601526105235482850152610524805485518188028101880190965280865291968796909593949193919260019291859190889084015b828210156111b4576000848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101611157565b5050505092508180548060200260200160405190810160405280929190818152602001828054801561120f57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111f1575b50505050509150935093509350935093509350935093565b6000818152606760205260408120546001600160a01b0316806107cc5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107f8565b33611291816116f8565b6112ad5760405162461bcd60e51b81526004016107f890613c6b565b61052454156113115760405162461bcd60e51b815260206004820152602a60248201527f436f6c6c65637461626c654552433732313a20526f79616c7469657320616c726044820152691958591e48185919195960b21b60648201526084016107f8565b60005b82518110156113b65761052483828151811061134057634e487b7160e01b600052603260045260246000fd5b602090810291909101810151825460018082018555600094855293839020825160049092020180546001600160a01b0319166001600160a01b03909216919091178155918101519282019290925560408201516002820155606090910151600390910155806113ae81614057565b915050611314565b505060408051606081018252835115158082526020808601519083018190529483015191909201819052610521805460ff1916909217909155610522929092555061052355565b60006001600160a01b0382166114675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107f8565b506001600160a01b031660009081526068602052604090205490565b61148b6120eb565b6114956000612572565b565b600054610100900460ff16158080156114b75750600054600160ff909116105b806114d15750303b1580156114d1575060005460ff166001145b6114ed5760405162461bcd60e51b81526004016107f890613bd2565b6000805460ff191660011790558015611510576000805461ff0019166101001790555b61052080546001600160a01b0319166001600160a01b03861617905560408051808201825260158152744c54442e494e43202d20c5a06b6f6461766572736560581b602080830191909152825180840190935260068352654c5444494e4360d01b9083015261157e916125c4565b6115866125f5565b61158e6126c1565b82611598306127a1565b6040516020016115a9929190613996565b60405160208183030381529060405260fd90805190602001906115cd92919061311f565b50816115d8306127a1565b6040516020016115e9929190613959565b60405160208183030381529060405260fe908051906020019061160d92919061311f565b508015611654576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6060606680546108619061401c565b6040516bffffffffffffffffffffffff193360601b16602082015260009081906034016040516020818303038152906040528051906020012090506116e58484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060fc549150849050612904565b949350505050565b610c6b33838361291a565b6001600160a01b0316600090815260fb602052604090205460ff1690565b33611720816116f8565b61173c5760405162461bcd60e51b81526004016107f890613c6b565b50610104805460ff1916911515919091179055565b61175c848484612145565b61165484848484612319565b33611772816116f8565b61178e5760405162461bcd60e51b81526004016107f890613c6b565b5060fc55565b6000336117a0816116f8565b6117bc5760405162461bcd60e51b81526004016107f890613c6b565b6105245461181f5760405162461bcd60e51b815260206004820152602a60248201527f436f6c6c65637461626c654552433732313a20526f79616c7469657320617265604482015269081b9bdd08185919195960b21b60648201526084016107f8565b6000876001600160401b0381111561184757634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611870578160200160208202803683370190505b5060ff5490915060005b898110156119d9576105268b8b838181106118a557634e487b7160e01b600052603260045260246000fd5b90506020028101906118b79190613d5a565b6040516118c592919061391a565b9081526020016040518091039020546000146119385760405162461bcd60e51b815260206004820152602c60248201527f436f6c6c65637461626c654552433732313a205649442068617320616c72656160448201526b191e481899595b881d5cd95960a21b60648201526084016107f8565b611943826001613e18565b9150816105268c8c8481811061196957634e487b7160e01b600052603260045260246000fd5b905060200281019061197b9190613d5a565b60405161198992919061391a565b908152602001604051809103902081905550818382815181106119bc57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152806119d181614057565b91505061187a565b506119e688888888611bff565b60ff546119f4908a90613e18565b60ff556040517f65f2e41d70f5a714e2a2672a5176c11867a02153be86d15ba62d554a7fa65d3490611a2b9084908d908d90613a31565b60405180910390a1505198975050505050505050565b6060611a4c8261201e565b60008281526097602052604081208054611a659061401c565b80601f0160208091040260200160405190810160405280929190818152602001828054611a919061401c565b8015611ade5780601f10611ab357610100808354040283529160200191611ade565b820191906000526020600020905b815481529060010190602001808311611ac157829003601f168201915b505050505090506000611aef6129e9565b9050805160001415611b02575092915050565b815115611b34578082604051602001611b1c92919061392a565b60405160208183030381529060405292505050919050565b6116e5846129f8565b611b456120eb565b611b4e816116f8565b15611bab5760405162461bcd60e51b815260206004820152602760248201527f41646d696e4163636573733a2041646472657373206973206d656d6265722061604482015266363932b0b23c9760c91b60648201526084016107f8565b6001600160a01b038116600081815260fb6020908152604091829020805460ff1916600117905590519182527fb251eb052afc73ffd02ffe85ad79990a8b3fed60d76dbc2fa2fdd7123dffd9149101610ad9565b33611c09816116f8565b611c255760405162461bcd60e51b81526004016107f890613c6b565b6101008590556101028490556101038390556101018290556040805186815260208101869052908101849052606081018390527f331ff4f9514a9996b7c494545a3ab3b50d000f5d1b50e51c146e3595f7f800c99060800160405180910390a15050505050565b80600114611d025760405162461bcd60e51b815260206004820152603e60248201527f436f6c6c65637461626c654552433732313a204f6e6c79206f6e6520746f6b6560448201527f6e2063616e206265207472616e7366657272656420617420612074696d65000060648201526084016107f8565b611654848484610bfe565b60fe8054611d1a9061401c565b80601f0160208091040260200160405190810160405280929190818152602001828054611d469061401c565b8015611d935780601f10611d6857610100808354040283529160200191611d93565b820191906000526020600020905b815481529060010190602001808311611d7657829003601f168201915b505050505081565b611da36120eb565b6001600160a01b038116611e085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107f8565b610b4f81612572565b33611e1b816116f8565b611e375760405162461bcd60e51b81526004016107f890613c6b565b6001600160a01b038216611e4a57600080fd5b61052080546001600160a01b0319166001600160a01b0384169081179091556040519081527f0adcfee1838fe3b772506896a765b4c4cb5636e907622bc0fca73cda021abe4e9060200160405180910390a15050565b610520546001600160a01b03163314611f215760405162461bcd60e51b815260206004820152603960248201527f436f6c6c65637461626c654552433732313a204f6e6c79206d6172656b74706c60448201527f6163652063616e2063616c6c2074686973206d6574686f642e0000000000000060648201526084016107f8565b60006105268383604051611f3692919061391a565b9081526020016040518091039020549050611f5081611227565b610520546001600160a01b03908116911614611fba5760405162461bcd60e51b8152602060048201526024808201527f436f6c6c65637461626c654552433732313a204e4654206e6f7420696e20455360448201526343524f5760e01b60648201526084016107f8565b6105278383604051611fcd92919061391a565b9081526040519081900360200190205460ff16610a1c5760016105278484604051611ff992919061391a565b908152604051908190036020019020805491151560ff19909216919091179055505050565b6000818152606760205260409020546001600160a01b0316610b4f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107f8565b600081815260696020526040902080546001600160a01b0319166001600160a01b03841690811790915581906120b282611227565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60c9546001600160a01b031633146114955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107f8565b6105215460ff1615156001148061216a5750610520546001600160a01b038381169116145b806121835750610520546001600160a01b038481169116145b6121e35760405162461bcd60e51b815260206004820152602b60248201527f436f6c6c65637461626c654552433732313a204e4654206973206e6f7420696e60448201526a7465726f70657261626c6560a81b60648201526084016107f8565b6001600160a01b0382163b610a1c576000818152610525602090815260408220805460018101825581845291832090910180546001600160a01b0319166001600160a01b03861617905590829052546003811061165457610523546105225464174876e8009161225291613f76565b61225c9190613e55565b6105225550505050565b6122703382612a5e565b61228c5760405162461bcd60e51b81526004016107f890613aee565b610a1c838383612adc565b6001600160a01b0383163b156122ac57505050565b816122b657505050565b6000836001600160a01b0316838390604051600060405180830381858888f193505050503d8060008114612306576040519150601f19603f3d011682016040523d82523d6000602084013e61230b565b606091505b505090508061165457600080fd5b6123233383612a5e565b61233f5760405162461bcd60e51b81526004016107f890613aee565b61165484848484612c40565b61235481612c73565b6000818152609760205260409020805461236d9061401c565b159050610b4f576000818152609760205260408120610b4f916131a3565b60026104ed5414156123df5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107f8565b60026104ed55565b6001600160a01b03821661243d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156124a25760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6000818152606760205260409020546001600160a01b0316156125075760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107f8565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166125eb5760405162461bcd60e51b81526004016107f890613c20565b610c6b8282612d08565b600054610100900460ff16158080156126155750600054600160ff909116105b8061262f5750303b15801561262f575060005460ff166001145b61264b5760405162461bcd60e51b81526004016107f890613bd2565b6000805460ff19166001179055801561266e576000805461ff0019166101001790555b612676612d56565b61267f33611b3d565b8015610b4f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610ad9565b600054610100900460ff16158080156126e15750600054600160ff909116105b806126fb5750303b1580156126fb575060005460ff166001145b6127175760405162461bcd60e51b81526004016107f890613bd2565b6000805460ff19166001179055801561273a576000805461ff0019166101001790555b612742612d56565b635a2d4d3f61010281905561010355610104805460ff191660011790558015610b4f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602001610ad9565b60408051602880825260608281019093526000919060208201818036833701905050905060005b60148110156128fd5760006127de826013613fb6565b6127e9906008613f76565b6127f4906002613ece565b612807906001600160a01b038716613e55565b60f81b9050600060108260f81c61281e9190613e69565b60f81b905060008160f81c60106128359190613f95565b8360f81c6128439190613fcd565b60f81b905061285182612d85565b8561285d866002613f76565b8151811061287b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061289b81612d85565b856128a7866002613f76565b6128b2906001613e18565b815181106128d057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535050505080806128f590614057565b9150506127c8565b5092915050565b6000826129118584612dc0565b14949350505050565b816001600160a01b0316836001600160a01b0316141561297c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107f8565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060fd80546108619061401c565b6060612a038261201e565b6000612a0d6129e9565b90506000815111612a2d5760405180602001604052806000815250610bf7565b80612a3784612e1b565b604051602001612a4892919061392a565b6040516020818303038152906040529392505050565b600080612a6a83611227565b9050806001600160a01b0316846001600160a01b03161480612ab157506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806116e55750836001600160a01b0316612aca846108e4565b6001600160a01b031614949350505050565b826001600160a01b0316612aef82611227565b6001600160a01b031614612b155760405162461bcd60e51b81526004016107f890613b8d565b6001600160a01b038216612b775760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107f8565b826001600160a01b0316612b8a82611227565b6001600160a01b031614612bb05760405162461bcd60e51b81526004016107f890613b8d565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612c4b848484612adc565b612c5784848484612ebd565b6116545760405162461bcd60e51b81526004016107f890613b3b565b6000612c7e82611227565b9050612c8982611227565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600054610100900460ff16612d2f5760405162461bcd60e51b81526004016107f890613c20565b8151612d4290606590602085019061311f565b508051610a1c90606690602084019061311f565b600054610100900460ff16612d7d5760405162461bcd60e51b81526004016107f890613c20565b611495612fca565b6000600a60f883901c1015612dac57612da360f883901c6030613e30565b60f81b92915050565b612da360f883901c6057613e30565b919050565b600081815b8451811015612e1357612dff82868381518110612df257634e487b7160e01b600052603260045260246000fd5b6020026020010151612ffa565b915080612e0b81614057565b915050612dc5565b509392505050565b60606000612e2883613029565b60010190506000816001600160401b03811115612e5557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612e7f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612eb857612e13565b612e89565b60006001600160a01b0384163b15612fbf57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f019033908990889088906004016139e1565b602060405180830381600087803b158015612f1b57600080fd5b505af1925050508015612f4b575060408051601f3d908101601f19168201909252612f4891810190613665565b60015b612fa5573d808015612f79576040519150601f19603f3d011682016040523d82523d6000602084013e612f7e565b606091505b508051612f9d5760405162461bcd60e51b81526004016107f890613b3b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506116e5565b506001949350505050565b600054610100900460ff16612ff15760405162461bcd60e51b81526004016107f890613c20565b61149533612572565b6000818310613016576000828152602084905260409020610bf7565b6000838152602083905260409020610bf7565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106130685772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613094576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106130b257662386f26fc10000830492506010015b6305f5e10083106130ca576305f5e100830492506008015b61271083106130de57612710830492506004015b606483106130f0576064830492506002015b600a83106107cc5760010192915050565b5080546000825590600052602060002090810190610b4f91906131d9565b82805461312b9061401c565b90600052602060002090601f01602090048101928261314d5760008555613193565b82601f1061316657805160ff1916838001178555613193565b82800160010185558215613193579182015b82811115613193578251825591602001919060010190613178565b5061319f9291506131d9565b5090565b5080546131af9061401c565b6000825580601f106131bf575050565b601f016020900490600052602060002090810190610b4f91905b5b8082111561319f57600081556001016131da565b60006001600160401b038311156132075761320761409e565b61321a601f8401601f1916602001613de8565b905082815283838301111561322e57600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114612dbb57600080fd5b60008083601f84011261326d578182fd5b5081356001600160401b03811115613283578182fd5b6020830191508360208260051b850101111561329e57600080fd5b9250929050565b80358015158114612dbb57600080fd5b60008083601f8401126132c6578182fd5b5081356001600160401b038111156132dc578182fd5b60208301915083602082850101111561329e57600080fd5b600082601f830112613304578081fd5b610bf7838335602085016131ee565b600060208284031215613324578081fd5b610bf782613245565b6000806040838503121561333f578081fd5b61334883613245565b915061335660208401613245565b90509250929050565b600080600060608486031215613373578081fd5b61337c84613245565b925061338a60208501613245565b9150604084013590509250925092565b600080600080608085870312156133af578081fd5b6133b885613245565b93506133c660208601613245565b92506040850135915060608501356001600160401b038111156133e7578182fd5b8501601f810187136133f7578182fd5b613406878235602084016131ee565b91505092959194509250565b60008060008060808587031215613427578384fd5b61343085613245565b935061343e60208601613245565b93969395505050506040820135916060013590565b60008060408385031215613465578182fd5b61346e83613245565b9150613356602084016132a5565b600080600060608486031215613490578081fd5b61349984613245565b925060208401356001600160401b03808211156134b4578283fd5b6134c0878388016132f4565b935060408601359150808211156134d5578283fd5b506134e2868287016132f4565b9150509250925092565b600080604083850312156134fe578182fd5b61350783613245565b946020939093013593505050565b60008060208385031215613527578182fd5b82356001600160401b0381111561353c578283fd5b6135488582860161325c565b90969095509350505050565b600080600060408486031215613568578081fd5b83356001600160401b0381111561357d578182fd5b6135898682870161325c565b909790965060209590950135949350505050565b60008060008060008060a087890312156135b5578384fd5b86356001600160401b038111156135ca578485fd5b6135d689828a0161325c565b909a90995060208901359860408101359850606081013597506080013595509350505050565b60006020828403121561360d578081fd5b610bf7826132a5565b60008060408385031215613628578182fd5b613507836132a5565b600060208284031215613642578081fd5b5035919050565b60006020828403121561365a578081fd5b8135610bf7816140b4565b600060208284031215613676578081fd5b8151610bf7816140b4565b60008060208385031215613693578182fd5b82356001600160401b038111156136a8578283fd5b613548858286016132b5565b6000808284036080808212156136c8578384fd5b6060808312156136d6578485fd5b6136de613d9e565b92506136e9866132a5565b8352602086810135818501526040808801358186015293955081870135936001600160401b038086111561371b578687fd5b858901955089601f87011261372e578687fd5b8535818111156137405761374061409e565b61374e848260051b01613de8565b8181528481019250878501600783901b890186018d101561376d57898afd5b8998505b828910156137c65787818e03121561378757898afd5b61378f613dc6565b61379882613245565b8152818701358782015285820135868201528782013588820152845260019890980197928501928701613771565b5080985050505050505050509250929050565b6000806000604084860312156137ed578081fd5b8335925060208401356001600160401b03811115613809578182fd5b613815868287016132b5565b9497909650939450505050565b60008060008060808587031215613837578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b8381101561388b5781516001600160a01b031687529582019590820190600101613866565b509495945050505050565b6000815180845260208085019450808401835b8381101561388b578151875295820195908201906001016138a9565b600081518084526138dd816020860160208601613ff0565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b6000835161393c818460208801613ff0565b835190830190613950818360208801613ff0565b01949350505050565b6000835161396b818460208801613ff0565b61060f60f31b908301908152835161398a816002840160208801613ff0565b01600201949350505050565b600083516139a8818460208801613ff0565b61060f60f31b90830190815283516139c7816002840160208801613ff0565b602f60f81b60029290910191820152600301949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613a14908301846138c5565b9695505050505050565b602081526000610bf76020830184613896565b604081526000613a446040830186613896565b602083820381850152818583528183019050818660051b84010187855b88811015613acc57858303601f190184528135368b9003601e19018112613a86578788fd5b8a0180356001600160401b03811115613a9d578889fd5b8036038c1315613aab578889fd5b613ab885828985016138f1565b958701959450505090840190600101613a61565b50909998505050505050505050565b602081526000610bf760208301846138c5565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526022908201527f41646d696e4163636573733a204163636f756e74206973206e6f742061646d69604082015261371760f11b606082015260800190565b600060c082018651151583526020808801518185015260408089015181860152606060c08187015283895180865260e088019150848b019550865b81811015613d2857865180516001600160a01b03168452868101518785015285810151868501528401518484015295850195608090920191600101613ce8565b50508681036080880152613d3c818a613853565b95505050505050613d5160a083018415159052565b95945050505050565b6000808335601e19843603018112613d70578283fd5b8301803591506001600160401b03821115613d89578283fd5b60200191503681900382131561329e57600080fd5b604051606081016001600160401b0381118282101715613dc057613dc061409e565b60405290565b604051608081016001600160401b0381118282101715613dc057613dc061409e565b604051601f8201601f191681016001600160401b0381118282101715613e1057613e1061409e565b604052919050565b60008219821115613e2b57613e2b614072565b500190565b600060ff821660ff84168060ff03821115613e4d57613e4d614072565b019392505050565b600082613e6457613e64614088565b500490565b600060ff831680613e7c57613e7c614088565b8060ff84160491505092915050565b600181815b80851115613ec6578160001904821115613eac57613eac614072565b80851615613eb957918102915b93841c9390800290613e90565b509250929050565b6000610bf78383600082613ee4575060016107cc565b81613ef1575060006107cc565b8160018114613f075760028114613f1157613f2d565b60019150506107cc565b60ff841115613f2257613f22614072565b50506001821b6107cc565b5060208310610133831016604e8410600b8410161715613f50575081810a6107cc565b613f5a8383613e8b565b8060001904821115613f6e57613f6e614072565b029392505050565b6000816000190483118215151615613f9057613f90614072565b500290565b600060ff821660ff84168160ff0481118215151615613f6e57613f6e614072565b600082821015613fc857613fc8614072565b500390565b600060ff821660ff841680821015613fe757613fe7614072565b90039392505050565b60005b8381101561400b578181015183820152602001613ff3565b838111156116545750506000910152565b600181811c9082168061403057607f821691505b6020821081141561405157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561406b5761406b614072565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610b4f57600080fdfea2646970667358221220da56e526b662ced8bd786c5abd594148be16e6f67bd862ba45e8988fbc3bcf3564736f6c63430008040033