0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610c718061007e6000396000f3fe6080604052600436106100b55760003560e01c80637e5465ba1161006957806391e1b3371161004e57806391e1b337146102175780639656a13c14610237578063f2fde38b1461025757600080fd5b80637e5465ba146101c25780638da5cb5b146101e257600080fd5b80633cb093711161009a5780633cb093711461016b5780635a284acf1461018d578063715018a6146101ad57600080fd5b806303d93828146100c1578063150b7a02146100f657600080fd5b366100bc57005b600080fd5b3480156100cd57600080fd5b506100e16100dc366004610a01565b610277565b60405190151581526020015b60405180910390f35b34801561010257600080fd5b5061013a61011136600461089a565b7f150b7a0200000000000000000000000000000000000000000000000000000000949350505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ed565b34801561017757600080fd5b5061018b610186366004610820565b6102d2565b005b34801561019957600080fd5b5061018b6101a836600461097c565b610367565b3480156101b957600080fd5b5061018b610455565b3480156101ce57600080fd5b5061018b6101dd366004610861565b610469565b3480156101ee57600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ed565b34801561022357600080fd5b5061018b6102323660046107fc565b6104fd565b34801561024357600080fd5b5061018b610252366004610a2d565b61054b565b34801561026357600080fd5b5061018b6102723660046107fc565b61063f565b6040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390526000917f2946de6c4ec03d8d15126164a7c0da68d7c6835173e41827a7a715f8becb07a8910160405180910390a150600192915050565b6102da6106f6565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb90604401600060405180830381600087803b15801561034a57600080fd5b505af115801561035e573d6000803e3d6000fd5b50505050505050565b61036f6106f6565b6000808473ffffffffffffffffffffffffffffffffffffffff166000858560405161039b929190610afc565b60006040518083038185875af1925050503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b50915091508161044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f52657665727465642066726f6d2073656c6c000000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b61045d6106f6565b6104676000610777565b565b6104716106f6565b6040517fa22cb46500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301526001602483015283169063a22cb46590604401600060405180830381600087803b1580156104e157600080fd5b505af11580156104f5573d6000803e3d6000fd5b505050505050565b6105056106f6565b60405173ffffffffffffffffffffffffffffffffffffffff8216904780156108fc02916000818181858888f19350505050158015610547573d6000803e3d6000fd5b5050565b6105536106f6565b60005b8351811015610639578273ffffffffffffffffffffffffffffffffffffffff166323b872dd308487858151811061058f5761058f610bbb565b60209081029190910101516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606401600060405180830381600087803b15801561060e57600080fd5b505af1158015610622573d6000803e3d6000fd5b50505050808061063190610b5b565b915050610556565b50505050565b6106476106f6565b73ffffffffffffffffffffffffffffffffffffffff81166106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610445565b6106f381610777565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610445565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356107f781610c19565b919050565b60006020828403121561080e57600080fd5b813561081981610c19565b9392505050565b60008060006060848603121561083557600080fd5b833561084081610c19565b9250602084013561085081610c19565b929592945050506040919091013590565b6000806040838503121561087457600080fd5b823561087f81610c19565b9150602083013561088f81610c19565b809150509250929050565b600080600080608085870312156108b057600080fd5b84356108bb81610c19565b93506020858101356108cc81610c19565b935060408601359250606086013567ffffffffffffffff808211156108f057600080fd5b818801915088601f83011261090457600080fd5b81358181111561091657610916610bea565b610946847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610b0c565b9150808252898482850101111561095c57600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060006040848603121561099157600080fd5b833561099c81610c19565b9250602084013567ffffffffffffffff808211156109b957600080fd5b818601915086601f8301126109cd57600080fd5b8135818111156109dc57600080fd5b8760208285010111156109ee57600080fd5b6020830194508093505050509250925092565b60008060408385031215610a1457600080fd5b8235610a1f81610c19565b946020939093013593505050565b600080600060608486031215610a4257600080fd5b833567ffffffffffffffff80821115610a5a57600080fd5b818601915086601f830112610a6e57600080fd5b8135602082821115610a8257610a82610bea565b8160051b9250610a93818401610b0c565b8281528181019085830185870184018c1015610aae57600080fd5b600096505b84871015610ad1578035835260019690960195918301918301610ab3565b509750610ae190508882016107ec565b955050505050610af3604085016107ec565b90509250925092565b8183823760009101908152919050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b5357610b53610bea565b604052919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bb4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146106f357600080fdfea2646970667358221220886d8748a8bfebd546e23fc5bb6c4f259d173e189297dca6e68feec0c87a1c5b64736f6c63430008070033