0x6080604052600436106103f35760003560e01c80638b42507f11610208578063c867d60b11610118578063e63fd31f116100ab578063f0cd1dac1161007a578063f0cd1dac14610be9578063f1d5f51714610bff578063f2fde38b14610c1f578063f84ba65d14610c3f578063f872858a14610c5f57600080fd5b8063e63fd31f14610b69578063ec28438a14610b89578063ef422a1814610ba9578063f022c1fb14610bc957600080fd5b8063da00097d116100e7578063da00097d14610acc578063dc44b6a014610aed578063dd46706414610b03578063dd62ed3e14610b2357600080fd5b8063c867d60b14610a41578063cab0347114610a71578063d01a8dbb14610a87578063d158272d14610aa757600080fd5b8063a69df4b51161019b578063c469b6dd1161016a578063c469b6dd146109bf578063c49b9a80146109d5578063c5d24189146109f5578063c816841b14610a0b578063c860795214610a2b57600080fd5b8063a69df4b514610954578063a83f53a714610969578063a9059cbb1461097f578063c2d4640e1461099f57600080fd5b8063a073d37f116101d7578063a073d37f146108e9578063a08e671f146108fe578063a457c2d714610914578063a5d69d1f1461093457600080fd5b80638b42507f146108715780638da5cb5b146108a1578063914eb66a146108bf57806395d89b41146108d457600080fd5b80634a74bb021161030357806370a082311161029657806382eefb431161026557806382eefb43146107d55780638366e79a146107eb578063844d591c1461080b57806388790a681461082b5780638a5c47361461084157600080fd5b806370a08231146107535780637d1db4a514610789578063807273ef1461079f578063807c2d9c146107bf57600080fd5b806357a5802f116102d257806357a5802f146106f25780635881f3ef14610708578063602bc62b1461072857806361a23c691461073d57600080fd5b80634a74bb021461066e5780634cb80fd51461068f5780635342acb4146106af578063557ed1ba146106df57600080fd5b806323b872dd116103865780632c4b2334116103555780632c4b2334146105bc578063313ce567146105dc57806339509351146105fe5780633b97084a1461061e5780633ecad2711461063e57600080fd5b806323b872dd146105335780632563ae831461055357806327c8f835146105735780632b112e49146105a757600080fd5b80631694505e116103c25780631694505e146104b457806318160ddd146104d45780631870517a146104f35780632198cf6c1461051357600080fd5b806306fdde03146103ff578063087332141461042a578063095ea7b31461044c5780631245e3471461047c57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610414610c80565b6040516104219190612fdb565b60405180910390f35b34801561043657600080fd5b5061044a610445366004612f40565b610d12565b005b34801561045857600080fd5b5061046c610467366004612ead565b610d70565b6040519015158152602001610421565b34801561048857600080fd5b5060065461049c906001600160a01b031681565b6040516001600160a01b039091168152602001610421565b3480156104c057600080fd5b50601e5461049c906001600160a01b031681565b3480156104e057600080fd5b50601a545b604051908152602001610421565b3480156104ff57600080fd5b5061044a61050e366004612f40565b610dbe565b34801561051f57600080fd5b5061044a61052e366004612e80565b610e0d565b34801561053f57600080fd5b5061046c61054e366004612e40565b610e62565b34801561055f57600080fd5b5061044a61056e366004612ed8565b610f3d565b34801561057f57600080fd5b5061049c7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156105b357600080fd5b506104e5610f85565b3480156105c857600080fd5b5061044a6105d7366004612dd0565b610fcf565b3480156105e857600080fd5b5060055460405160ff9091168152602001610421565b34801561060a57600080fd5b5061046c610619366004612ead565b61101b565b34801561062a57600080fd5b5061044a610639366004612f10565b611051565b34801561064a57600080fd5b5061046c610659366004612dd0565b600d6020526000908152604090205460ff1681565b34801561067a57600080fd5b50601f5461046c90600160a81b900460ff1681565b34801561069b57600080fd5b5061044a6106aa366004612dd0565b611080565b3480156106bb57600080fd5b5061046c6106ca366004612dd0565b600a6020526000908152604090205460ff1681565b3480156106eb57600080fd5b50426104e5565b3480156106fe57600080fd5b506104e560145481565b34801561071457600080fd5b5061049c610723366004612dd0565b6110d2565b34801561073457600080fd5b506002546104e5565b34801561074957600080fd5b506104e560155481565b34801561075f57600080fd5b506104e561076e366004612dd0565b6001600160a01b031660009081526007602052604090205490565b34801561079557600080fd5b506104e5601b5481565b3480156107ab57600080fd5b5061044a6107ba366004612dd0565b611464565b3480156107cb57600080fd5b506104e5601c5481565b3480156107e157600080fd5b506104e560185481565b3480156107f757600080fd5b5061046c610806366004612e08565b611504565b34801561081757600080fd5b5061044a610826366004612e80565b611751565b34801561083757600080fd5b506104e560115481565b34801561084d57600080fd5b5061046c61085c366004612dd0565b60096020526000908152604090205460ff1681565b34801561087d57600080fd5b5061046c61088c366004612dd0565b600c6020526000908152604090205460ff1681565b3480156108ad57600080fd5b506000546001600160a01b031661049c565b3480156108cb57600080fd5b5061044a6117a6565b3480156108e057600080fd5b50610414611808565b3480156108f557600080fd5b50601d546104e5565b34801561090a57600080fd5b506104e560195481565b34801561092057600080fd5b5061046c61092f366004612ead565b611817565b34801561094057600080fd5b5061044a61094f366004612ed8565b611866565b34801561096057600080fd5b5061044a6118ae565b34801561097557600080fd5b506104e560165481565b34801561098b57600080fd5b5061046c61099a366004612ead565b6119b4565b3480156109ab57600080fd5b5061044a6109ba366004612f40565b6119f8565b3480156109cb57600080fd5b506104e560105481565b3480156109e157600080fd5b5061044a6109f0366004612ed8565b611a47565b348015610a0157600080fd5b506104e5600f5481565b348015610a1757600080fd5b50601f5461049c906001600160a01b031681565b348015610a3757600080fd5b506104e560125481565b348015610a4d57600080fd5b5061046c610a5c366004612dd0565b600b6020526000908152604090205460ff1681565b348015610a7d57600080fd5b506104e560135481565b348015610a9357600080fd5b5061044a610aa2366004612dd0565b611ac9565b348015610ab357600080fd5b5060055461049c9061010090046001600160a01b031681565b348015610ad857600080fd5b50601f5461046c90600160b01b900460ff1681565b348015610af957600080fd5b506104e5600e5481565b348015610b0f57600080fd5b5061044a610b1e366004612f10565b611b15565b348015610b2f57600080fd5b506104e5610b3e366004612e08565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b7557600080fd5b5060205461049c906001600160a01b031681565b348015610b9557600080fd5b5061044a610ba4366004612f10565b611b9a565b348015610bb557600080fd5b5061044a610bc4366004612e80565b611bc9565b348015610bd557600080fd5b5061044a610be4366004612e80565b611c1e565b348015610bf557600080fd5b506104e560175481565b348015610c0b57600080fd5b5061044a610c1a366004612f10565b611cac565b348015610c2b57600080fd5b5061044a610c3a366004612dd0565b611cdb565b348015610c4b57600080fd5b5061044a610c5a366004612e80565b611db3565b348015610c6b57600080fd5b50601f5461046c90600160b81b900460ff1681565b606060038054610c8f906131b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb906131b8565b8015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610d3c90613074565b60405180910390fd5b601183905560128290556013819055610d6881610d628585611e08565b90611e08565b601855505050565b6001600160a01b03821660009081526009602052604081205460ff1615610da95760405162461bcd60e51b8152600401610d3c906130a9565b610db4338484611e67565b5060015b92915050565b6000546001600160a01b03163314610de85760405162461bcd60e51b8152600401610d3c90613074565b600e839055600f8290556010819055610e0581610d628585611e08565b601755505050565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526009602052604081205460ff1615610e9b5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff1615610ed45760405162461bcd60e51b8152600401610d3c9061302e565b610edf848484611fc4565b50610f328433610f2d85604051806060016040528060288152602001613230602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612403565b611e67565b5060015b9392505050565b6000546001600160a01b03163314610f675760405162461bcd60e51b8152600401610d3c90613074565b601f8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260076020526040812054601a54610fca9161243d565b905090565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610d3c90613074565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610db4918590610f2d9086611e08565b6000546001600160a01b0316331461107b5760405162461bcd60e51b8152600401610d3c90613074565b601d55565b6000546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610d3c90613074565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110fd5760405162461bcd60e51b8152600401610d3c90613074565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190612dec565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bb57600080fd5b505afa1580156111cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f39190612dec565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561123957600080fd5b505afa15801561124d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112719190612dec565b91506001600160a01b0382166113f557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ba57600080fd5b505afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190612dec565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190612dec565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f29190612dec565b91505b601f80546001600160a01b03199081166001600160a01b038581169182178455601e8054909316948116949094179091556000908152600b60209081526040808320805460ff19908116600190811790925594549095168352600d909152902080549091169091179055919050565b6000546001600160a01b0316331461148e5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03811660009081526009602052604090205460ff16156114c75760405162461bcd60e51b8152600401610d3c9061302e565b60405147906001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114ff573d6000803e3d6000fd5b505050565b600080546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03831660009081526009602052604090205460ff16156115685760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03821660009081526009602052604090205460ff16156115e45760405162461bcd60e51b815260206004820152602a60248201527f4f70706f7369746520616464726573732063616e6e6f742063616c6c207468696044820152693990333ab731ba34b7b760b11b6064820152608401610d3c565b6001600160a01b0383163014156116495760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b6064820152608401610d3c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561168b57600080fd5b505afa15801561169f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c39190612f28565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117499190612ef4565b949350505050565b6000546001600160a01b0316331461177b5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117d05760405162461bcd60e51b8152600401610d3c90613074565b600080546040516001600160a01b0390911690600080516020613258833981519152908390a3600080546001600160a01b0319169055565b606060048054610c8f906131b8565b6000610db43384610f2d85604051806060016040528060258152602001613278602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612403565b6000546001600160a01b031633146118905760405162461bcd60e51b8152600401610d3c90613074565b601f8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146119145760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d3c565b60025442116119655760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610d3c565b600154600080546040516001600160a01b03938416939091169160008051602061325883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03821660009081526009602052604081205460ff16156119ed5760405162461bcd60e51b8152600401610d3c9061302e565b610f32338484611fc4565b6000546001600160a01b03163314611a225760405162461bcd60e51b8152600401610d3c90613074565b601483905560158290556016819055611a3f81610d628585611e08565b601955505050565b6000546001600160a01b03163314611a715760405162461bcd60e51b8152600401610d3c90613074565b601f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611abe90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610d3c90613074565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b3f5760405162461bcd60e51b8152600401610d3c90613074565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611b6e814261314a565b600255600080546040516001600160a01b0390911690600080516020613258833981519152908390a350565b6000546001600160a01b03163314611bc45760405162461bcd60e51b8152600401610d3c90613074565b601b55565b6000546001600160a01b03163314611bf35760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611c485760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527fe99f29fbb01ff82a97c008f8ea710c2be4f51bfe4ae3cf9a686504b2878e096c91015b60405180910390a15050565b6000546001600160a01b03163314611cd65760405162461bcd60e51b8152600401610d3c90613074565b601c55565b6000546001600160a01b03163314611d055760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b038116611d6a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d3c565b600080546040516001600160a01b038085169392169160008051602061325883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ddd5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611e15838561314a565b905083811015610f365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d3c565b6001600160a01b03821660009081526009602052604090205460ff1615611ea05760405162461bcd60e51b8152600401610d3c906130a9565b6001600160a01b038316611f025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d3c565b6001600160a01b038216611f635760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d3c565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526009602052604081205460ff1615611ffd5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156120365760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841661209a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d3c565b6001600160a01b0383166120fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d3c565b601f54600160a01b900460ff16156121205761211984848461247f565b9050610f36565b6001600160a01b0384166000908152600c602052604090205460ff1615801561216257506001600160a01b0383166000908152600c602052604090205460ff16155b156121ca57601b548211156121ca5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d3c565b30600090815260076020526040902054601d54811080159081906121f85750601f54600160a01b900460ff16155b801561221d57506001600160a01b0386166000908152600d602052604090205460ff16155b80156122325750601f54600160a81b900460ff165b1561225857601f54600160b01b900460ff161561224f57601d5491505b612258826125d8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600790915291909120546122aa918690612403565b6001600160a01b038716600090815260076020908152604080832093909355600a90529081205460ff16806122f757506001600160a01b0386166000908152600a602052604090205460ff165b61230b57612306878787612713565b61230d565b845b601f54909150600160b81b900460ff16801561234257506001600160a01b0386166000908152600b602052604090205460ff16155b1561237857601c5461236d82610d62896001600160a01b031660009081526007602052604090205490565b111561237857600080fd5b6001600160a01b03861660009081526007602052604090205461239b9082611e08565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123ef9085815260200190565b60405180910390a360019350505050610f36565b600081848411156124275760405162461bcd60e51b8152600401610d3c9190612fdb565b50600061243484866131a1565b95945050505050565b6000610f3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612403565b6001600160a01b03831660009081526009602052604081205460ff16156124b85760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156124f15760405162461bcd60e51b8152600401610d3c9061302e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054612543918490612403565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546125729083611e08565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125c69086815260200190565b60405180910390a35060019392505050565b601f805460ff60a01b1916600160a01b17905560195460145460009161260e9160029161260891829087906129df565b90612a5e565b9050600061261c838361243d565b905061262781612aa0565b60145447906000906126479061263e906002612a5e565b6019549061243d565b90506000612669600261260884612608601454886129df90919063ffffffff16565b9050600061268683612608601654876129df90919063ffffffff16565b9050600061269e82612698878661243d565b9061243d565b905080156126c1576005546126c19061010090046001600160a01b031682612c52565b81156126dd576006546126dd906001600160a01b031683612c52565b6000831180156126ed5750600087115b156126fc576126fc8784612cc1565b5050601f805460ff60a01b19169055505050505050565b6001600160a01b03831660009081526009602052604081205460ff161561274c5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156127855760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b0384166000908152600d602052604081205460ff1615612839576001600160a01b03851660009081526009602052604090205460ff16156127df5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156128185760405162461bcd60e51b8152600401610d3c9061302e565b6128326064612608601754866129df90919063ffffffff16565b90506128e9565b6001600160a01b0384166000908152600d602052604090205460ff16156128e9576001600160a01b03851660009081526009602052604090205460ff16156128935760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156128cc5760405162461bcd60e51b8152600401610d3c9061302e565b6128e66064612608601854866129df90919063ffffffff16565b90505b80156129d5576001600160a01b03851660009081526009602052604090205460ff16156129285760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156129615760405162461bcd60e51b8152600401610d3c9061302e565b3060009081526007602052604090205461297b9082611e08565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129cc9085815260200190565b60405180910390a35b612434838261243d565b6000826129ee57506000610db8565b60006129fa8385613182565b905082612a078583613162565b14610f365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d3c565b6000610f3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612da2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ae357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b3757600080fd5b505afa158015612b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6f9190612dec565b81600181518110612b9057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601e54612bb69130911684611e67565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bef90859060009086903090429060040161310e565b600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611ca09291906130f5565b6001600160a01b03821660009081526009602052604090205460ff1615612c8b5760405162461bcd60e51b8152600401610d3c9061302e565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114ff573d6000803e3d6000fd5b601e54612cd99030906001600160a01b031684611e67565b601e5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000dead811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d9b9190612f6b565b5050505050565b60008183612dc35760405162461bcd60e51b8152600401610d3c9190612fdb565b5060006124348486613162565b600060208284031215612de1578081fd5b8135610f3681613209565b600060208284031215612dfd578081fd5b8151610f3681613209565b60008060408385031215612e1a578081fd5b8235612e2581613209565b91506020830135612e3581613209565b809150509250929050565b600080600060608486031215612e54578081fd5b8335612e5f81613209565b92506020840135612e6f81613209565b929592945050506040919091013590565b60008060408385031215612e92578182fd5b8235612e9d81613209565b91506020830135612e3581613221565b60008060408385031215612ebf578182fd5b8235612eca81613209565b946020939093013593505050565b600060208284031215612ee9578081fd5b8135610f3681613221565b600060208284031215612f05578081fd5b8151610f3681613221565b600060208284031215612f21578081fd5b5035919050565b600060208284031215612f39578081fd5b5051919050565b600080600060608486031215612f54578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f7f578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612fd05781516001600160a01b031687529582019590820190600101612fab565b509495945050505050565b6000602080835283518082850152825b8181101561300757858101830151858201604001528201612feb565b818111156130185783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f596f757220616464726573732063616e6e6f742063616c6c20746869732066756040820152653731ba34b7b760d11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b8281526040602082015260006117496040830184612f98565b85815284602082015260a06040820152600061312d60a0830186612f98565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561315d5761315d6131f3565b500190565b60008261317d57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561319c5761319c6131f3565b500290565b6000828210156131b3576131b36131f3565b500390565b600181811c908216806131cc57607f821691505b602082108114156131ed57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461321e57600080fd5b50565b801515811461321e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207472dc1fa0cc3542916bf69e52c51be2f5288e03bdc6d0720cc6ae5560ced5a164736f6c63430008040033
0x60e0604052600760a081905266073686962322e360cc1b60c09081526200002a9160039190620006be565b5060408051808201909152600780825266073686962322e360cc1b60209092019182526200005b91600491620006be565b5060058054748664f7619736129eb563edfd8016c75210539d79096001600160a81b0319909116179055600680546001600160a01b031916739916f5378bdce8f47148c4e3cde43c86ea9bf63b1781556ddead0000000000000000000000006080526000600e8190556004600f81905560108290556011829055601283905560138290556014829055600a601581905560169290925560175560189190915560198190556200010d90600990620007f1565b6200011d90633b9aca00620008bd565b601a55600554620001339060ff16600a620007f1565b6200014390633b9aca00620008bd565b601b55600554620001599060ff16600a620007f1565b6200016990633b9aca00620008bd565b601c556005546200017f9060ff16600a620007f1565b6200018c90600a620008bd565b601d55601f805462ffffff60a81b19166201000160a81b179055620001ae3390565b602080546001600160a01b0319166001600160a01b0392909216919091179055348015620001db57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027057600080fd5b505afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000764565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f457600080fd5b505afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000764565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200037857600080fd5b505af11580156200038d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b3919062000764565b601f80546001600160a01b039283166001600160a01b031991821617909155601e80549284169290911682179055601a5430600090815260086020908152604080832094835293905291822055600190600a90620004196000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600a8352208054909216600117909155601054600f54600e546200048f936200047b929062001e086200064f821b17901c565b6200064f60201b62001e081790919060201c565b601781905550620004ba6013546200047b6012546011546200064f60201b62001e081790919060201c565b601881905550620004e56016546200047b6015546014546200064f60201b62001e081790919060201c565b6019556001600b6000620005016000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601f549091168152600b90925280822080548416600190811790915530835290822080549093168117909255600c90620005716000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600c8452828120805486166001908117909155601f549092168152600d909352908220805490931617909155601a5490600790620005dd3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601a546040516200064091815260200190565b60405180910390a35062000932565b6000806200065e83856200078d565b905083811015620006b55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b828054620006cc90620008df565b90600052602060002090601f016020900481019282620006f057600085556200073b565b82601f106200070b57805160ff19168380011785556200073b565b828001600101855582156200073b579182015b828111156200073b5782518255916020019190600101906200071e565b50620007499291506200074d565b5090565b5b808211156200074957600081556001016200074e565b60006020828403121562000776578081fd5b81516001600160a01b0381168114620006b5578182fd5b60008219821115620007a357620007a36200091c565b500190565b600181815b80851115620007e9578160001904821115620007cd57620007cd6200091c565b80851615620007db57918102915b93841c9390800290620007ad565b509250929050565b60006200080260ff84168362000809565b9392505050565b6000826200081a57506001620006b8565b816200082957506000620006b8565b81600181146200084257600281146200084d576200086d565b6001915050620006b8565b60ff8411156200086157620008616200091c565b50506001821b620006b8565b5060208310610133831016604e8410600b841016171562000892575081810a620006b8565b6200089e8383620007a8565b8060001904821115620008b557620008b56200091c565b029392505050565b6000816000190483118215151615620008da57620008da6200091c565b500290565b600181811c90821680620008f457607f821691505b602082108114156200091657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6132d26200095f6000396000818161058501528181610f870152612d0e01526132d26000f3fe6080604052600436106103f35760003560e01c80638b42507f11610208578063c867d60b11610118578063e63fd31f116100ab578063f0cd1dac1161007a578063f0cd1dac14610be9578063f1d5f51714610bff578063f2fde38b14610c1f578063f84ba65d14610c3f578063f872858a14610c5f57600080fd5b8063e63fd31f14610b69578063ec28438a14610b89578063ef422a1814610ba9578063f022c1fb14610bc957600080fd5b8063da00097d116100e7578063da00097d14610acc578063dc44b6a014610aed578063dd46706414610b03578063dd62ed3e14610b2357600080fd5b8063c867d60b14610a41578063cab0347114610a71578063d01a8dbb14610a87578063d158272d14610aa757600080fd5b8063a69df4b51161019b578063c469b6dd1161016a578063c469b6dd146109bf578063c49b9a80146109d5578063c5d24189146109f5578063c816841b14610a0b578063c860795214610a2b57600080fd5b8063a69df4b514610954578063a83f53a714610969578063a9059cbb1461097f578063c2d4640e1461099f57600080fd5b8063a073d37f116101d7578063a073d37f146108e9578063a08e671f146108fe578063a457c2d714610914578063a5d69d1f1461093457600080fd5b80638b42507f146108715780638da5cb5b146108a1578063914eb66a146108bf57806395d89b41146108d457600080fd5b80634a74bb021161030357806370a082311161029657806382eefb431161026557806382eefb43146107d55780638366e79a146107eb578063844d591c1461080b57806388790a681461082b5780638a5c47361461084157600080fd5b806370a08231146107535780637d1db4a514610789578063807273ef1461079f578063807c2d9c146107bf57600080fd5b806357a5802f116102d257806357a5802f146106f25780635881f3ef14610708578063602bc62b1461072857806361a23c691461073d57600080fd5b80634a74bb021461066e5780634cb80fd51461068f5780635342acb4146106af578063557ed1ba146106df57600080fd5b806323b872dd116103865780632c4b2334116103555780632c4b2334146105bc578063313ce567146105dc57806339509351146105fe5780633b97084a1461061e5780633ecad2711461063e57600080fd5b806323b872dd146105335780632563ae831461055357806327c8f835146105735780632b112e49146105a757600080fd5b80631694505e116103c25780631694505e146104b457806318160ddd146104d45780631870517a146104f35780632198cf6c1461051357600080fd5b806306fdde03146103ff578063087332141461042a578063095ea7b31461044c5780631245e3471461047c57600080fd5b366103fa57005b600080fd5b34801561040b57600080fd5b50610414610c80565b6040516104219190612fdb565b60405180910390f35b34801561043657600080fd5b5061044a610445366004612f40565b610d12565b005b34801561045857600080fd5b5061046c610467366004612ead565b610d70565b6040519015158152602001610421565b34801561048857600080fd5b5060065461049c906001600160a01b031681565b6040516001600160a01b039091168152602001610421565b3480156104c057600080fd5b50601e5461049c906001600160a01b031681565b3480156104e057600080fd5b50601a545b604051908152602001610421565b3480156104ff57600080fd5b5061044a61050e366004612f40565b610dbe565b34801561051f57600080fd5b5061044a61052e366004612e80565b610e0d565b34801561053f57600080fd5b5061046c61054e366004612e40565b610e62565b34801561055f57600080fd5b5061044a61056e366004612ed8565b610f3d565b34801561057f57600080fd5b5061049c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b357600080fd5b506104e5610f85565b3480156105c857600080fd5b5061044a6105d7366004612dd0565b610fcf565b3480156105e857600080fd5b5060055460405160ff9091168152602001610421565b34801561060a57600080fd5b5061046c610619366004612ead565b61101b565b34801561062a57600080fd5b5061044a610639366004612f10565b611051565b34801561064a57600080fd5b5061046c610659366004612dd0565b600d6020526000908152604090205460ff1681565b34801561067a57600080fd5b50601f5461046c90600160a81b900460ff1681565b34801561069b57600080fd5b5061044a6106aa366004612dd0565b611080565b3480156106bb57600080fd5b5061046c6106ca366004612dd0565b600a6020526000908152604090205460ff1681565b3480156106eb57600080fd5b50426104e5565b3480156106fe57600080fd5b506104e560145481565b34801561071457600080fd5b5061049c610723366004612dd0565b6110d2565b34801561073457600080fd5b506002546104e5565b34801561074957600080fd5b506104e560155481565b34801561075f57600080fd5b506104e561076e366004612dd0565b6001600160a01b031660009081526007602052604090205490565b34801561079557600080fd5b506104e5601b5481565b3480156107ab57600080fd5b5061044a6107ba366004612dd0565b611464565b3480156107cb57600080fd5b506104e5601c5481565b3480156107e157600080fd5b506104e560185481565b3480156107f757600080fd5b5061046c610806366004612e08565b611504565b34801561081757600080fd5b5061044a610826366004612e80565b611751565b34801561083757600080fd5b506104e560115481565b34801561084d57600080fd5b5061046c61085c366004612dd0565b60096020526000908152604090205460ff1681565b34801561087d57600080fd5b5061046c61088c366004612dd0565b600c6020526000908152604090205460ff1681565b3480156108ad57600080fd5b506000546001600160a01b031661049c565b3480156108cb57600080fd5b5061044a6117a6565b3480156108e057600080fd5b50610414611808565b3480156108f557600080fd5b50601d546104e5565b34801561090a57600080fd5b506104e560195481565b34801561092057600080fd5b5061046c61092f366004612ead565b611817565b34801561094057600080fd5b5061044a61094f366004612ed8565b611866565b34801561096057600080fd5b5061044a6118ae565b34801561097557600080fd5b506104e560165481565b34801561098b57600080fd5b5061046c61099a366004612ead565b6119b4565b3480156109ab57600080fd5b5061044a6109ba366004612f40565b6119f8565b3480156109cb57600080fd5b506104e560105481565b3480156109e157600080fd5b5061044a6109f0366004612ed8565b611a47565b348015610a0157600080fd5b506104e5600f5481565b348015610a1757600080fd5b50601f5461049c906001600160a01b031681565b348015610a3757600080fd5b506104e560125481565b348015610a4d57600080fd5b5061046c610a5c366004612dd0565b600b6020526000908152604090205460ff1681565b348015610a7d57600080fd5b506104e560135481565b348015610a9357600080fd5b5061044a610aa2366004612dd0565b611ac9565b348015610ab357600080fd5b5060055461049c9061010090046001600160a01b031681565b348015610ad857600080fd5b50601f5461046c90600160b01b900460ff1681565b348015610af957600080fd5b506104e5600e5481565b348015610b0f57600080fd5b5061044a610b1e366004612f10565b611b15565b348015610b2f57600080fd5b506104e5610b3e366004612e08565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b7557600080fd5b5060205461049c906001600160a01b031681565b348015610b9557600080fd5b5061044a610ba4366004612f10565b611b9a565b348015610bb557600080fd5b5061044a610bc4366004612e80565b611bc9565b348015610bd557600080fd5b5061044a610be4366004612e80565b611c1e565b348015610bf557600080fd5b506104e560175481565b348015610c0b57600080fd5b5061044a610c1a366004612f10565b611cac565b348015610c2b57600080fd5b5061044a610c3a366004612dd0565b611cdb565b348015610c4b57600080fd5b5061044a610c5a366004612e80565b611db3565b348015610c6b57600080fd5b50601f5461046c90600160b81b900460ff1681565b606060038054610c8f906131b8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbb906131b8565b8015610d085780601f10610cdd57610100808354040283529160200191610d08565b820191906000526020600020905b815481529060010190602001808311610ceb57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610d455760405162461bcd60e51b8152600401610d3c90613074565b60405180910390fd5b601183905560128290556013819055610d6881610d628585611e08565b90611e08565b601855505050565b6001600160a01b03821660009081526009602052604081205460ff1615610da95760405162461bcd60e51b8152600401610d3c906130a9565b610db4338484611e67565b5060015b92915050565b6000546001600160a01b03163314610de85760405162461bcd60e51b8152600401610d3c90613074565b600e839055600f8290556010819055610e0581610d628585611e08565b601755505050565b6000546001600160a01b03163314610e375760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526009602052604081205460ff1615610e9b5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff1615610ed45760405162461bcd60e51b8152600401610d3c9061302e565b610edf848484611fc4565b50610f328433610f2d85604051806060016040528060288152602001613230602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612403565b611e67565b5060015b9392505050565b6000546001600160a01b03163314610f675760405162461bcd60e51b8152600401610d3c90613074565b601f8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260076020526040812054601a54610fca9161243d565b905090565b6000546001600160a01b03163314610ff95760405162461bcd60e51b8152600401610d3c90613074565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610db4918590610f2d9086611e08565b6000546001600160a01b0316331461107b5760405162461bcd60e51b8152600401610d3c90613074565b601d55565b6000546001600160a01b031633146110aa5760405162461bcd60e51b8152600401610d3c90613074565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110fd5760405162461bcd60e51b8152600401610d3c90613074565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561113b57600080fd5b505afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190612dec565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bb57600080fd5b505afa1580156111cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f39190612dec565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561123957600080fd5b505afa15801561124d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112719190612dec565b91506001600160a01b0382166113f557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ba57600080fd5b505afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f29190612dec565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561133a57600080fd5b505afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113729190612dec565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156113ba57600080fd5b505af11580156113ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f29190612dec565b91505b601f80546001600160a01b03199081166001600160a01b038581169182178455601e8054909316948116949094179091556000908152600b60209081526040808320805460ff19908116600190811790925594549095168352600d909152902080549091169091179055919050565b6000546001600160a01b0316331461148e5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03811660009081526009602052604090205460ff16156114c75760405162461bcd60e51b8152600401610d3c9061302e565b60405147906001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114ff573d6000803e3d6000fd5b505050565b600080546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03831660009081526009602052604090205460ff16156115685760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03821660009081526009602052604090205460ff16156115e45760405162461bcd60e51b815260206004820152602a60248201527f4f70706f7369746520616464726573732063616e6e6f742063616c6c207468696044820152693990333ab731ba34b7b760b11b6064820152608401610d3c565b6001600160a01b0383163014156116495760405162461bcd60e51b815260206004820152602360248201527f43616e2774206c657420796f752074616b6520616c6c206e617469766520746f60448201526235b2b760e91b6064820152608401610d3c565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561168b57600080fd5b505afa15801561169f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c39190612f28565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117499190612ef4565b949350505050565b6000546001600160a01b0316331461177b5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117d05760405162461bcd60e51b8152600401610d3c90613074565b600080546040516001600160a01b0390911690600080516020613258833981519152908390a3600080546001600160a01b0319169055565b606060048054610c8f906131b8565b6000610db43384610f2d85604051806060016040528060258152602001613278602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612403565b6000546001600160a01b031633146118905760405162461bcd60e51b8152600401610d3c90613074565b601f8054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146119145760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d3c565b60025442116119655760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610d3c565b600154600080546040516001600160a01b03938416939091169160008051602061325883398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6001600160a01b03821660009081526009602052604081205460ff16156119ed5760405162461bcd60e51b8152600401610d3c9061302e565b610f32338484611fc4565b6000546001600160a01b03163314611a225760405162461bcd60e51b8152600401610d3c90613074565b601483905560158290556016819055611a3f81610d628585611e08565b601955505050565b6000546001600160a01b03163314611a715760405162461bcd60e51b8152600401610d3c90613074565b601f8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611abe90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610d3c90613074565b602080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b3f5760405162461bcd60e51b8152600401610d3c90613074565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611b6e814261314a565b600255600080546040516001600160a01b0390911690600080516020613258833981519152908390a350565b6000546001600160a01b03163314611bc45760405162461bcd60e51b8152600401610d3c90613074565b601b55565b6000546001600160a01b03163314611bf35760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611c485760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b038216600081815260096020908152604091829020805460ff19168515159081179091558251938452908301527fe99f29fbb01ff82a97c008f8ea710c2be4f51bfe4ae3cf9a686504b2878e096c91015b60405180910390a15050565b6000546001600160a01b03163314611cd65760405162461bcd60e51b8152600401610d3c90613074565b601c55565b6000546001600160a01b03163314611d055760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b038116611d6a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d3c565b600080546040516001600160a01b038085169392169160008051602061325883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611ddd5760405162461bcd60e51b8152600401610d3c90613074565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600080611e15838561314a565b905083811015610f365760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d3c565b6001600160a01b03821660009081526009602052604090205460ff1615611ea05760405162461bcd60e51b8152600401610d3c906130a9565b6001600160a01b038316611f025760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d3c565b6001600160a01b038216611f635760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d3c565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526009602052604081205460ff1615611ffd5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156120365760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841661209a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d3c565b6001600160a01b0383166120fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d3c565b601f54600160a01b900460ff16156121205761211984848461247f565b9050610f36565b6001600160a01b0384166000908152600c602052604090205460ff1615801561216257506001600160a01b0383166000908152600c602052604090205460ff16155b156121ca57601b548211156121ca5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610d3c565b30600090815260076020526040902054601d54811080159081906121f85750601f54600160a01b900460ff16155b801561221d57506001600160a01b0386166000908152600d602052604090205460ff16155b80156122325750601f54600160a81b900460ff165b1561225857601f54600160b01b900460ff161561224f57601d5491505b612258826125d8565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600790915291909120546122aa918690612403565b6001600160a01b038716600090815260076020908152604080832093909355600a90529081205460ff16806122f757506001600160a01b0386166000908152600a602052604090205460ff165b61230b57612306878787612713565b61230d565b845b601f54909150600160b81b900460ff16801561234257506001600160a01b0386166000908152600b602052604090205460ff16155b1561237857601c5461236d82610d62896001600160a01b031660009081526007602052604090205490565b111561237857600080fd5b6001600160a01b03861660009081526007602052604090205461239b9082611e08565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123ef9085815260200190565b60405180910390a360019350505050610f36565b600081848411156124275760405162461bcd60e51b8152600401610d3c9190612fdb565b50600061243484866131a1565b95945050505050565b6000610f3683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612403565b6001600160a01b03831660009081526009602052604081205460ff16156124b85760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156124f15760405162461bcd60e51b8152600401610d3c9061302e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260079091529190912054612543918490612403565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546125729083611e08565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125c69086815260200190565b60405180910390a35060019392505050565b601f805460ff60a01b1916600160a01b17905560195460145460009161260e9160029161260891829087906129df565b90612a5e565b9050600061261c838361243d565b905061262781612aa0565b60145447906000906126479061263e906002612a5e565b6019549061243d565b90506000612669600261260884612608601454886129df90919063ffffffff16565b9050600061268683612608601654876129df90919063ffffffff16565b9050600061269e82612698878661243d565b9061243d565b905080156126c1576005546126c19061010090046001600160a01b031682612c52565b81156126dd576006546126dd906001600160a01b031683612c52565b6000831180156126ed5750600087115b156126fc576126fc8784612cc1565b5050601f805460ff60a01b19169055505050505050565b6001600160a01b03831660009081526009602052604081205460ff161561274c5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03831660009081526009602052604090205460ff16156127855760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b0384166000908152600d602052604081205460ff1615612839576001600160a01b03851660009081526009602052604090205460ff16156127df5760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156128185760405162461bcd60e51b8152600401610d3c9061302e565b6128326064612608601754866129df90919063ffffffff16565b90506128e9565b6001600160a01b0384166000908152600d602052604090205460ff16156128e9576001600160a01b03851660009081526009602052604090205460ff16156128935760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156128cc5760405162461bcd60e51b8152600401610d3c9061302e565b6128e66064612608601854866129df90919063ffffffff16565b90505b80156129d5576001600160a01b03851660009081526009602052604090205460ff16156129285760405162461bcd60e51b8152600401610d3c9061302e565b6001600160a01b03841660009081526009602052604090205460ff16156129615760405162461bcd60e51b8152600401610d3c9061302e565b3060009081526007602052604090205461297b9082611e08565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906129cc9085815260200190565b60405180910390a35b612434838261243d565b6000826129ee57506000610db8565b60006129fa8385613182565b905082612a078583613162565b14610f365760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d3c565b6000610f3683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612da2565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ae357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612b3757600080fd5b505afa158015612b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6f9190612dec565b81600181518110612b9057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601e54612bb69130911684611e67565b601e5460405163791ac94760e01b81526001600160a01b039091169063791ac94790612bef90859060009086903090429060040161310e565b600060405180830381600087803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611ca09291906130f5565b6001600160a01b03821660009081526009602052604090205460ff1615612c8b5760405162461bcd60e51b8152600401610d3c9061302e565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114ff573d6000803e3d6000fd5b601e54612cd99030906001600160a01b031684611e67565b601e5460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660848301524260a48301529091169063f305d71990839060c4016060604051808303818588803b158015612d6257600080fd5b505af1158015612d76573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d9b9190612f6b565b5050505050565b60008183612dc35760405162461bcd60e51b8152600401610d3c9190612fdb565b5060006124348486613162565b600060208284031215612de1578081fd5b8135610f3681613209565b600060208284031215612dfd578081fd5b8151610f3681613209565b60008060408385031215612e1a578081fd5b8235612e2581613209565b91506020830135612e3581613209565b809150509250929050565b600080600060608486031215612e54578081fd5b8335612e5f81613209565b92506020840135612e6f81613209565b929592945050506040919091013590565b60008060408385031215612e92578182fd5b8235612e9d81613209565b91506020830135612e3581613221565b60008060408385031215612ebf578182fd5b8235612eca81613209565b946020939093013593505050565b600060208284031215612ee9578081fd5b8135610f3681613221565b600060208284031215612f05578081fd5b8151610f3681613221565b600060208284031215612f21578081fd5b5035919050565b600060208284031215612f39578081fd5b5051919050565b600080600060608486031215612f54578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612f7f578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612fd05781516001600160a01b031687529582019590820190600101612fab565b509495945050505050565b6000602080835283518082850152825b8181101561300757858101830151858201604001528201612feb565b818111156130185783604083870101525b50601f01601f1916929092016040019392505050565b60208082526026908201527f596f757220616464726573732063616e6e6f742063616c6c20746869732066756040820152653731ba34b7b760d11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b8281526040602082015260006117496040830184612f98565b85815284602082015260a06040820152600061312d60a0830186612f98565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561315d5761315d6131f3565b500190565b60008261317d57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561319c5761319c6131f3565b500290565b6000828210156131b3576131b36131f3565b500390565b600181811c908216806131cc57607f821691505b602082108114156131ed57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461321e57600080fd5b50565b801515811461321e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207472dc1fa0cc3542916bf69e52c51be2f5288e03bdc6d0720cc6ae5560ced5a164736f6c63430008040033