0x60a060405261271060805234801561001657600080fd5b506000805460ff1916905561002a3361002f565b610088565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b608051611b0a6100be6000396000818160f2015281816104300152818161046901528181610a5a0152610a930152611b0a6000f3fe60806040526004361061009a5760003560e01c8063715018a611610061578063715018a61461014a5780638456cb591461015f5780638da5cb5b146101745780638db93169146101aa578063f2fde38b146101bd578063f9962ae5146101dd57005b80632425b3fe146100a35780633ccfd60b146100b65780633f4ba83a146100cb5780634c255c97146100e05780635c975abb1461012757005b366100a157005b005b6100a16100b1366004611584565b6101f0565b3480156100c257600080fd5b506100a16102cb565b3480156100d757600080fd5b506100a161036b565b3480156100ec57600080fd5b506101147f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561013357600080fd5b5060005460ff16604051901515815260200161011e565b34801561015657600080fd5b506100a161037d565b34801561016b57600080fd5b506100a161038f565b34801561018057600080fd5b5060005461010090046001600160a01b03166040516001600160a01b03909116815260200161011e565b6100a16101b83660046115de565b61039f565b3480156101c957600080fd5b506100a16101d8366004611637565b610626565b6100a16101eb3660046115de565b61069c565b6101f8610836565b806040013534146102505760405162461bcd60e51b815260206004820152601d60248201527f566f6c756d6e537761703a3a6e6f7420656e6f75676820616d6f756e7400000060448201526064015b60405180910390fd5b61025c8130600161087c565b60015b600161027160c0840160a08501611652565b61027b919061168e565b63ffffffff168163ffffffff1610156102ac5761029a8230600061087c565b806102a4816116b3565b91505061025f565b506102c8816102c160e0820160c08301611637565b600061087c565b50565b6102d3610c89565b604051600090339047908381818185875af1925050503d8060008114610315576040519150601f19603f3d011682016040523d82523d6000602084013e61031a565b606091505b50509050806102c85760405162461bcd60e51b815260206004820152601b60248201527f566f6c756d6e537761703a3a7769746864726177206661696c656400000000006044820152606401610247565b610373610c89565b61037b610ce9565b565b610385610c89565b61037b6000610d3b565b610397610c89565b61037b610d94565b6103ac60a08201826116d6565b6103bb91506040830135611727565b34146104095760405162461bcd60e51b815260206004820152601a60248201527f566f6c756d6e537761703a3a6e6f7420656e6f756768206574680000000000006044820152606401610247565b60006104186020830183611637565b90506001600160a01b03811663b6f9de9560408401357f000000000000000000000000000000000000000000000000000000000000000061045f60a0870160808801611746565b61048d9061ffff167f000000000000000000000000000000000000000000000000000000000000000061176a565b61049b906060880135611727565b6104a59190611781565b6104b260208701876116d6565b6104bf60a08901896116d6565b60008181106104d0576104d06117a3565b90506020020160208101906104e59190611637565b6104f042603c6117b9565b6040518763ffffffff1660e01b8152600401610510959493929190611818565b6000604051808303818588803b15801561052957600080fd5b505af115801561053d573d6000803e3d6000fd5b50600193505050505b61055360a08401846116d6565b9050811015610621576001600160a01b03821663b6f9de956040850135600061057f60208801886116d6565b61058c60a08a018a6116d6565b8881811061059c5761059c6117a3565b90506020020160208101906105b19190611637565b6105bc42603c6117b9565b6040518763ffffffff1660e01b81526004016105dc959493929190611818565b6000604051808303818588803b1580156105f557600080fd5b505af1158015610609573d6000803e3d6000fd5b505050505080806106199061184f565b915050610546565b505050565b61062e610c89565b6001600160a01b0381166106935760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610247565b6102c881610d3b565b6106a4610836565b806060013534146106f75760405162461bcd60e51b815260206004820152601d60248201527f566f6c756d6e537761703a3a6e6f7420656e6f75676820616d6f756e740000006044820152606401610247565b61070460408201826116d6565b610710915060016117b9565b61071d60208301836116d6565b90501461076c5760405162461bcd60e51b815260206004820152601d60248201527f566f6c756d6e537761703a3a6e6f7420656e6f756768206c656e6774680000006044820152606401610247565b63ffffffff61077e60208301836116d6565b905011156107ce5760405162461bcd60e51b815260206004820181905260248201527f566f6c756d6e537761703a3a6f766572666c6f772070617468206c656e6774686044820152606401610247565b60005b60016107e360a0840160808501611652565b6107ed919061168e565b63ffffffff168163ffffffff16101561081c5761080a8230610dd1565b80610814816116b3565b9150506107d1565b506102c88161083160c0820160a08301611637565b610dd1565b60005460ff161561037b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610247565b600061088b6020850185611637565b9050600061089c60208601866116d6565b60016108ab60208901896116d6565b6108b692915061176a565b8181106108c5576108c56117a3565b90506020020160208101906108da9190611637565b90506001600160a01b03821663b6f9de954760006108fb60208a018a6116d6565b30610908426102586117b9565b6040518763ffffffff1660e01b8152600401610928959493929190611818565b6000604051808303818588803b15801561094157600080fd5b505af1158015610955573d6000803e3d6000fd5b5050506001600160a01b038316915063095ea7b390506109786020880188611637565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156109bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e09190611868565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611881565b508215610b8c5760007f0000000000000000000000000000000000000000000000000000000000000000610a8960a0880160808901611746565b610ab79061ffff167f000000000000000000000000000000000000000000000000000000000000000061176a565b610ac5906060890135611727565b610acf9190611781565b6040516370a0823160e01b815230600482015290915081906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3c9190611868565b1015610b8a5760405162461bcd60e51b815260206004820152601e60248201527f566f6c756d6e537761703a3a6d657620626f7420636f6d6d696e672e2e2e00006044820152606401610247565b505b610b996020860186611637565b6040516370a0823160e01b81523060048201526001600160a01b039182169163791ac94791908416906370a0823190602401602060405180830381865afa158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c9190611868565b6000610c23610c1e60208b018b6116d6565b61145f565b88610c30426102586117b9565b6040518663ffffffff1660e01b8152600401610c509594939291906118a3565b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b505050505050505050565b6000546001600160a01b0361010090910416331461037b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610247565b610cf161153b565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b610d9c610836565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1e3390565b6000610de06020840184611637565b90506000610df160208501856116d6565b6001610e0060208801886116d6565b610e0b92915061176a565b818110610e1a57610e1a6117a3565b9050602002016020810190610e2f9190611637565b60408051602081019091526000808252919250905b610e5160408701876116d6565b90508160ff161015610f475781610e6b60208801886116d6565b8360ff16818110610e7e57610e7e6117a3565b9050602002016020810190610e939190611637565b60601b610ea360408901896116d6565b8460ff16818110610eb657610eb66117a3565b9050602002016020810190610ecb9190611914565b60e81b610edb60208a018a6116d6565b610ee6866001611939565b60ff16818110610ef857610ef86117a3565b9050602002016020810190610f0d9190611637565b60601b604051602001610f23949392919061198e565b60405160208183030381529060405291508080610f3f906119d9565b915050610e44565b506040805160a0810182528281523060208201526001600160a01b0385169163c04b8d599147918101610f7c426102586117b9565b815260200147815260200160008152506040518363ffffffff1660e01b8152600401610fa891906119f8565b60206040518083038185885af1158015610fc6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610feb9190611868565b506040805160208101825260008082529091611009908801886116d6565b9150505b60018160ff161061110c578161102660208901896116d6565b8360ff16818110611039576110396117a3565b905060200201602081019061104e9190611637565b60601b61105e60408a018a6116d6565b611069600186611a67565b60ff1681811061107b5761107b6117a3565b90506020020160208101906110909190611914565b60e81b6110a060208b018b6116d6565b6110ab600187611a67565b60ff168181106110bd576110bd6117a3565b90506020020160208101906110d29190611637565b60601b6040516020016110e8949392919061198e565b6040516020818303038152906040529150808061110490611a8a565b91505061100d565b506001600160a01b03831663095ea7b36111296020890189611637565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa15801561116d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111919190611868565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190611881565b50836001600160a01b031663c04b8d596040518060a00160405280848152602001886001600160a01b031681526020014261025861123e91906117b9565b81526040516370a0823160e01b81523060048201526020909101906001600160a01b038816906370a0823190602401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611868565b815260200160008152506040518263ffffffff1660e01b81526004016112d491906119f8565b6020604051808303816000875af11580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113179190611868565b506001600160a01b03851630036114575761133560208701876116d6565b6000818110611346576113466117a3565b905060200201602081019061135b9190611637565b6001600160a01b0316632e1a7d4d61137660208901896116d6565b6000818110611387576113876117a3565b905060200201602081019061139c9190611637565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156113e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114069190611868565b6040518263ffffffff1660e01b815260040161142491815260200190565b600060405180830381600087803b15801561143e57600080fd5b505af1158015611452573d6000803e3d6000fd5b505050505b505050505050565b60608160008167ffffffffffffffff81111561147d5761147d611aa7565b6040519080825280602002602001820160405280156114a6578160200160208202803683370190505b5090506000825b600181106115305786866114c260018461176a565b8181106114d1576114d16117a3565b90506020020160208101906114e69190611637565b8383815181106114f8576114f86117a3565b6001600160a01b03909216602092830291909101909101528161151a8161184f565b925050808061152890611abd565b9150506114ad565b509095945050505050565b60005460ff1661037b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610247565b60006020828403121561159657600080fd5b813567ffffffffffffffff8111156115ad57600080fd5b820160e081850312156115bf57600080fd5b9392505050565b600060c082840312156115d857600080fd5b50919050565b6000602082840312156115f057600080fd5b813567ffffffffffffffff81111561160757600080fd5b611613848285016115c6565b949350505050565b80356001600160a01b038116811461163257600080fd5b919050565b60006020828403121561164957600080fd5b6115bf8261161b565b60006020828403121561166457600080fd5b813563ffffffff811681146115bf57600080fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156116ab576116ab611678565b039392505050565b600063ffffffff8083168181036116cc576116cc611678565b6001019392505050565b6000808335601e198436030181126116ed57600080fd5b83018035915067ffffffffffffffff82111561170857600080fd5b6020019150600581901b360382131561172057600080fd5b9250929050565b600081600019048311821515161561174157611741611678565b500290565b60006020828403121561175857600080fd5b813561ffff811681146115bf57600080fd5b60008282101561177c5761177c611678565b500390565b60008261179e57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600082198211156117cc576117cc611678565b500190565b8183526000602080850194508260005b8581101561180d576001600160a01b036117fa8361161b565b16875295820195908201906001016117e1565b509495945050505050565b8581526080602082015260006118326080830186886117d1565b6001600160a01b0394909416604083015250606001529392505050565b60006001820161186157611861611678565b5060010190565b60006020828403121561187a57600080fd5b5051919050565b60006020828403121561189357600080fd5b815180151581146115bf57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118f35784516001600160a01b0316835293830193918301916001016118ce565b50506001600160a01b03969096166060850152505050608001529392505050565b60006020828403121561192657600080fd5b813562ffffff811681146115bf57600080fd5b600060ff821660ff84168060ff0382111561195657611956611678565b019392505050565b60005b83811015611979578181015183820152602001611961565b83811115611988576000848401525b50505050565b600085516119a0818460208a0161195e565b6bffffffffffffffffffffffff199586169201918252506001600160e81b03199290921660148301529091166017820152602b01919050565b600060ff821660ff81036119ef576119ef611678565b60010192915050565b602081526000825160a0602084015280518060c0850152611a208160e086016020850161195e565b60018060a01b0360208601511660408501526040850151606085015260608501516080850152608085015160a085015260e0601f19601f8301168501019250505092915050565b600060ff821660ff841680821015611a8157611a81611678565b90039392505050565b600060ff821680611a9d57611a9d611678565b6000190192915050565b634e487b7160e01b600052604160045260246000fd5b600081611acc57611acc611678565b50600019019056fea26469706673582212205d901b1320215bf0313a348688a16e2f58a7a5f0237e9fa0b64976620777e40b64736f6c634300080d0033