//
0x608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36114718061005f6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80637c61e3bf116100ad578063a3f4df7e11610071578063a3f4df7e14610237578063e30c3978146102b4578063ebf8e6c6146102bc578063f2fde38b146102c4578063f56f48f2146102ea5761012c565b80637c61e3bf146101d55780638da5cb5b146101dd5780638f32d59b146101e557806390107afe14610201578063a20baee61461022f5761012c565b806345079cb4116100f457806345079cb4146101ab57806358a6aa88146101b35780635f42caf8146101bb578063715018a6146101c357806379ba5097146101cd5761012c565b80630490be83146101315780630fdb11cf1461014b5780631be5c92f14610153578063200d2ed21461015b5780633078fff514610187575b600080fd5b6101396102f2565b60408051918252519081900360200190f35b6101396102f8565b610139610640565b610163610645565b6040518082600481111561017357fe5b60ff16815260200191505060405180910390f35b61018f61064e565b604080516001600160a01b039092168252519081900360200190f35b61013961065d565b610139610668565b610139610674565b6101cb610679565b005b6101cb6106ca565b61018f610739565b61018f610748565b6101ed610757565b604080519115158252519081900360200190f35b6101cb6004803603604081101561021757600080fd5b506001600160a01b0381358116916020013516610768565b610139610891565b61023f61089d565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610279578181015183820152602001610261565b50505050905090810190601f1680156102a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018f6108c2565b6101396108d1565b6101cb600480360360208110156102da57600080fd5b50356001600160a01b03166108d6565b61013961097b565b60065481565b6000610302611347565b61030a610981565b9050610314611347565b61032682600001518360800151610acb565b9050610330611375565b610338610ba6565b9050600060075460ff16600481111561034d57fe5b141561047f5761035d8383610c52565b156103bc5761036b81610c73565b156103875761037a6002610cc1565b600654935050505061063d565b61039081610d27565b1561039f5761037a6001610cc1565b6103a96001610cc1565b6103b281610d4a565b935050505061063d565b6103c583610d27565b15610407576103d381610c73565b156103e25761037a6004610cc1565b6103ec6003610cc1565b6103f581610d27565b156103a957600654935050505061063d565b6104118383610d65565b1561045e5761041f81610c73565b1561042e5761037a6002610cc1565b61043781610d27565b156104465761037a6001610cc1565b6104508382610e04565b1561039f576103b283610e83565b61046781610c73565b15610476576104766004610cc1565b6103b283610e83565b600160075460ff16600481111561049257fe5b14156104ca576104a3838383610e9b565b156104b2576104766000610cc1565b6104bb81610c73565b156103ec5761037a6002610cc1565b600260075460ff1660048111156104dd57fe5b14156104fd576104ee838383610e9b565b1561037a576104766000610cc1565b600360075460ff16600481111561051057fe5b14156105b9576105208383610c52565b156105475761052e81610c73565b1561053d5761037a6002610cc1565b6103ec6001610cc1565b61055083610d27565b1561056d5761055e81610c73565b156103ec5761037a6004610cc1565b61057681610c73565b15610585576104766004610cc1565b61058e81610d27565b156105a057600654935050505061063d565b6105aa8382610e04565b1561039f576104766000610cc1565b600460075460ff1660048111156105cc57fe5b1415610639576105dc8383610c52565b156105eb5761037a6002610cc1565b6105f483610d27565b1561060657600654935050505061063d565b610611838383610e9b565b15610620576104766000610cc1565b61062a8383610d65565b156104765761037a6002610cc1565b5050505b90565b601281565b60075460ff1681565b6002546001600160a01b031681565b66b1a2bc2ec5000081565b6706f05b59d3b2000081565b600181565b610681610757565b6106c0576040805162461bcd60e51b815260206004820181905260248201526000805160206113ec833981519152604482015290519081900360640190fd5b6106c8610ef3565b565b60006106d4610f3d565b9050806001600160a01b03166106e86108c2565b6001600160a01b03161461072d5760405162461bcd60e51b81526004018080602001828103825260298152602001806113a26029913960400191505060405180910390fd5b61073681610f41565b50565b6003546001600160a01b031681565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610770610757565b6107af576040805162461bcd60e51b815260206004820181905260248201526000805160206113ec833981519152604482015290519081900360640190fd5b6107b882610f9b565b6107c181610f9b565b600280546001600160a01b038481166001600160a01b03199283161790925560038054928416929091169190911790556007805460ff19169055610803611347565b61080b610981565b9050610815611347565b61082782600001518360800151610acb565b90506108338282610c52565b158015610846575061084482610d27565b155b6108815760405162461bcd60e51b815260040180806020018281038252603081526020018061140c6030913960400191505060405180910390fd5b61088a82610e83565b5050505050565b670de0b6b3a764000081565b60405180604001604052806009815260200168141c9a58d95199595960ba1b81525081565b6001546001600160a01b031690565b600681565b6108de610757565b61091d576040805162461bcd60e51b815260206004820181905260248201526000805160206113ec833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b038316908117909155610943610748565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61384081565b610989611347565b600260009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d757600080fd5b505afa9250505080156109fc57506040513d60208110156109f757600080fd5b505160015b610a055761063d565b60ff166080820152600260009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610a5b57600080fd5b505afa925050508015610a9d57506040513d60a0811015610a7b57600080fd5b5080516020820151604083015160608401516080909401519293919290919060015b610aa65761063d565b506001600160501b03909316845250602083015260408201526001606082015261063d565b610ad3611347565b60025460408051639a6fc8f560e01b81526001600160501b03600019870116600482015290516001600160a01b0390921691639a6fc8f59160248082019260a092909190829003018186803b158015610b2b57600080fd5b505afa925050508015610b6d57506040513d60a0811015610b4b57600080fd5b5080516020820151604083015160608401516080909401519293919290919060015b610b7657610ba0565b506001600160501b039093168452506020830152604082015260ff82166080820152600160608201525b92915050565b610bae611375565b600354604080516332e6aadb60e01b81526001600482015290516001600160a01b03909216916332e6aadb91602480820192606092909190829003018186803b158015610bfa57600080fd5b505afa925050508015610c2e57506040513d6060811015610c1a57600080fd5b508051602082015160409092015190919060015b610c375761063d565b9115158352602083015260408201526001606082015261063d565b6000610c5d8361104e565b80610c6c5750610c6c8261104e565b9392505050565b60008160600151610c8657506001610cbc565b60408201511580610c9a5750428260400151115b15610ca757506001610cbc565b6020820151610cb857506001610cbc565b5060005b919050565b6007805482919060ff19166001836004811115610cda57fe5b02179055507f5c57579a8214fe4f710c1c56fa829f045b9fa6d225a744225a30c32188064d4e8160405180826004811115610d1157fe5b60ff16815260200191505060405180910390a150565b6000613840610d438360400151426110ad90919063ffffffff16565b1192915050565b600080610d5a83602001516110ef565b9050610ba081611106565b600080610d7d8460200151856080015160ff16611141565b90506000610d968460200151856080015160ff16611141565b90506000610da4838361118a565b90506000610db284846111a0565b90506000610dee82610de2670de0b6b3a7640000610dd6838863ffffffff6110ad16565b9063ffffffff6111b016565b9063ffffffff61120916565b6706f05b59d3b200001098975050505050505050565b600080610e1c8460200151856080015160ff16611141565b90506000610e2d84602001516110ef565b90506000610e3b828461118a565b90506000610e4983856111a0565b90506000610e6d83610de2670de0b6b3a7640000610dd6868463ffffffff6110ad16565b66b1a2bc2ec50000101598975050505050505050565b600080610d5a8360200151846080015160ff16611141565b6000610ea682610c73565b80610eb55750610eb582610d27565b80610ec55750610ec58484610c52565b80610ed45750610ed484610d27565b15610ee157506000610c6c565b610eeb8483610e04565b949350505050565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3390565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116610ff6576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e742063616e6e6f74206265207a65726f20616464726573730000604482015290519081900360640190fd5b803b8061104a576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420636f64652073697a652063616e6e6f74206265207a65726f604482015290519081900360640190fd5b5050565b6000816060015161106157506001610cbc565b81516001600160501b031661107857506001610cbc565b6040820151158061108c5750428260400151115b1561109957506001610cbc565b6000826020015113610cb857506001610cbc565b6000610c6c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061124b565b6000610ba08264e8d4a5100063ffffffff6111b016565b60068190556040805182815290517f4d29de21de555af78a62fc82dd4bc05e9ae5b0660a37f04729527e0f22780cd39181900360200190a150565b6000806012831061116a57611163846011198501600a0a63ffffffff61120916565b9050610c6c565b6012831015610c6c57610eeb846012859003600a0a63ffffffff6111b016565b60008183106111995781610c6c565b5090919050565b6000818310156111995781610c6c565b6000826111bf57506000610ba0565b828202828482816111cc57fe5b0414610c6c5760405162461bcd60e51b81526004018080602001828103825260218152602001806113cb6021913960400191505060405180910390fd5b6000610c6c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112e2565b600081848411156112da5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561129f578181015183820152602001611287565b50505050905090810190601f1680156112cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836113315760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561129f578181015183820152602001611287565b50600083858161133d57fe5b0495945050505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60405180608001604052806000151581526020016000815260200160008152602001600015158152509056fe4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e6572536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725072696365466565643a20436861696e6c696e6b206d75737420626520776f726b696e6720616e642063757272656e74a26469706673582212209da56899cba7ac287978053b8cbd012329fa7de81f67289b9f74887ccca12ed164736f6c634300060b0033