0x608060405234801561001057600080fd5b50610b63806100206000396000f3fe6080604052600436106100555760003560e01c8063207e80cd1461005a578063269ce2fa1461007c578063328ab0d91461009c578063485cc955146100bc578063bae47ae5146100dc578063f4161d8b146100ef575b600080fd5b34801561006657600080fd5b5061007a6100753660046108e3565b61010f565b005b34801561008857600080fd5b5061007a61009736600461081e565b6101bd565b3480156100a857600080fd5b5061007a6100b7366004610761565b6101ea565b3480156100c857600080fd5b5061007a6100d7366004610729565b610265565b61007a6100ea366004610904565b610327565b3480156100fb57600080fd5b5061007a61010a366004610761565b6103d8565b336000908152600260209081526040808320858452909152902054829060ff166101545760405162461bcd60e51b815260040161014b9061099f565b60405180910390fd5b60015460405163207e80cd60e01b81526001600160a01b039091169063207e80cd906101869086908690600401610a43565b600060405180830381600087803b1580156101a057600080fd5b505af11580156101b4573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b031633146101e75760405162461bcd60e51b815260040161014b90610976565b50565b6001546001600160a01b031633146102145760405162461bcd60e51b815260040161014b90610976565b60008260800151602001518060200190518101906102329190610706565b6001600160a01b0316600090815260026020908152604080832094835293905291909120805460ff191660011790555050565b600054610100900460ff166102805760005460ff1615610288565b6102886104c5565b6102a45760405162461bcd60e51b815260040161014b906109ec565b600054610100900460ff161580156102cf576000805460ff1961ff0019909116610100171660011790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b0319169184169190911790558015610322576000805461ff00191690555b505050565b336000908152600260209081526040808320898452909152902054869060ff166103635760405162461bcd60e51b815260040161014b9061099f565b60015460405163bae47ae560e01b81526001600160a01b039091169063bae47ae59061039d908a908a908a908a908a908a90600401610a51565b600060405180830381600087803b1580156103b757600080fd5b505af11580156103cb573d6000803e3d6000fd5b5050505050505050505050565b6001546001600160a01b031633146104025760405162461bcd60e51b815260040161014b90610976565b60008260800151602001518060200190518101906104209190610706565b600054604051632e1a7d4d60e01b81529192506201000090046001600160a01b031690632e1a7d4d90610457908590600401610a3a565b600060405180830381600087803b15801561047157600080fd5b505af1158015610485573d6000803e3d6000fd5b50506040516001600160a01b038416925084156108fc02915084906000818181858888f193505050501580156104bf573d6000803e3d6000fd5b50505050565b60006104d0306104d6565b15905090565b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511190505b919050565b803561050481610b18565b600082601f830112610524578081fd5b813567ffffffffffffffff81111561053e5761053e610b02565b610551601f8201601f1916602001610ad8565b818152846020838601011115610565578283fd5b816020850160208301379081016020019190915292915050565b600060608284031215610590578081fd5b6040516060810167ffffffffffffffff82821081831117156105b4576105b4610b02565b81604052829350843591506105c882610b18565b908252602084013590808211156105de57600080fd5b506105eb85828601610514565b6020830152506040830135801515811461060457600080fd5b6040919091015292915050565b600060408284031215610622578081fd5b6040516040810181811067ffffffffffffffff8211171561064557610645610b02565b6040529050808235600081900b811461065d57600080fd5b8152602092830135920191909152919050565b600060608284031215610681578081fd5b6040516060810167ffffffffffffffff82821081831117156106a5576106a5610b02565b8160405282935084359150808211156106bd57600080fd5b6106c986838701610514565b835260208501359150808211156106df57600080fd5b506106ec85828601610514565b602083015250604083013560ff8116811461060457600080fd5b600060208284031215610717578081fd5b815161072281610b18565b9392505050565b6000806040838503121561073b578081fd5b823561074681610b18565b9150602083013561075681610b18565b809150509250929050565b60008060408385031215610773578182fd5b823567ffffffffffffffff8082111561078a578384fd5b9084019060a0828703121561079d578384fd5b60405160a0810181811083821117156107b8576107b8610b02565b6040526107c483610509565b8152602083013560208201526107dc60408401610509565b6040820152606083013560608201526080830135828111156107fc578586fd5b6108088882860161057f565b6080830152509660209590950135955050505050565b60006020828403121561082f578081fd5b813567ffffffffffffffff80821115610846578283fd5b9083019060e08286031215610859578283fd5b61086360c0610ad8565b61086d8684610611565b8152604083013582811115610880578485fd5b61088c87828601610670565b602083015250606083013560408201526108a860808401610509565b606082015260a0830135608082015260c0830135828111156108c8578485fd5b6108d48782860161057f565b60a08301525095945050505050565b600080604083850312156108f5578182fd5b50508035926020909101359150565b60008060008060008060e0878903121561091c578182fd5b86359550602087013594506109348860408901610611565b93506080870135925060a087013567ffffffffffffffff811115610956578283fd5b61096289828a01610514565b92505060c087013590509295509295509295565b6020808252600f908201526e13db9b1e481b5d5b1d1a5d985d5b1d608a1b604082015260600190565b6020808252602d908201527f5769746864726177206964206e6f7420657869737473206f722073656e64657260408201526c103737ba1030b71037bbb732b960991b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b90815260200190565b918252602082015260400190565b6000878252602087818401528651820b604084015280870151606084015285608084015260e060a084015284518060e0850152825b81811015610aa35786810183015185820161010001528201610a86565b81811115610ab5578361010083870101525b5060c08401949094525050601f91909101601f1916016101000195945050505050565b60405181810167ffffffffffffffff81118282101715610afa57610afa610b02565b604052919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146101e757600080fdfea264697066735822122088d234229a4d407003d0101024a3654cd9ca36c5e633d0d78ca9708a283d09de64736f6c63430008000033