60806040523480156200001157600080fd5b50604051620011db380380620011db83398101604081905262000034916200034f565b33828260036200004583826200044a565b5060046200005482826200044a565b5050506001600160a01b0381166200008757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200009281620000c4565b50620000bc33620000a66012600a6200062b565b620000b6906305f5e10062000643565b62000116565b505062000673565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001425760405163ec442f0560e01b8152600060048201526024016200007e565b620001506000838362000154565b5050565b6001600160a01b038316620001835780600260008282546200017791906200065d565b90915550620001f79050565b6001600160a01b03831660009081526020819052604090205481811015620001d85760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016200007e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620002155760028054829003905562000234565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200027a91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002af57600080fd5b81516001600160401b0380821115620002cc57620002cc62000287565b604051601f8301601f19908116603f01168101908282118183101715620002f757620002f762000287565b81604052838152602092508660208588010111156200031557600080fd5b600091505b838210156200033957858201830151818301840152908201906200031a565b6000602085830101528094505050505092915050565b600080604083850312156200036357600080fd5b82516001600160401b03808211156200037b57600080fd5b62000389868387016200029d565b93506020850151915080821115620003a057600080fd5b50620003af858286016200029d565b9150509250929050565b600181811c90821680620003ce57607f821691505b602082108103620003ef57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000445576000816000526020600020601f850160051c81016020861015620004205750805b601f850160051c820191505b8181101562000441578281556001016200042c565b5050505b505050565b81516001600160401b0381111562000466576200046662000287565b6200047e81620004778454620003b9565b84620003f5565b602080601f831160018114620004b657600084156200049d5750858301515b600019600386901b1c1916600185901b17855562000441565b600085815260208120601f198616915b82811015620004e757888601518255948401946001909101908401620004c6565b5085821015620005065787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200056d57816000190482111562000551576200055162000516565b808516156200055f57918102915b93841c939080029062000531565b509250929050565b600082620005865750600162000625565b81620005955750600062000625565b8160018114620005ae5760028114620005b957620005d9565b600191505062000625565b60ff841115620005cd57620005cd62000516565b50506001821b62000625565b5060208310610133831016604e8410600b8410161715620005fe575081810a62000625565b6200060a83836200052c565b806000190482111562000621576200062162000516565b0290505b92915050565b60006200063c60ff84168362000575565b9392505050565b808202811582820484141762000625576200062562000516565b8082018082111562000625576200062562000516565b610b5880620006836000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101d4578063a9059cbb146101dc578063dd62ed3e146101ef578063f2fde38b1461023557600080fd5b806370a082311461016e578063715018a6146101a45780638da5cb5b146101ac57600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a57806340c10f191461015957600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610248565b6040516100f9919061096d565b60405180910390f35b610115610110366004610a03565b6102da565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610a2d565b6102f4565b604051601281526020016100f9565b61016c610167366004610a03565b610318565b005b61012961017c366004610a69565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61016c61032e565b60055460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f9565b6100ec610342565b6101156101ea366004610a03565b610351565b6101296101fd366004610a8b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61016c610243366004610a69565b61035f565b60606003805461025790610abe565b80601f016020809104026020016040519081016040528092919081815260200182805461028390610abe565b80156102d05780601f106102a5576101008083540402835291602001916102d0565b820191906000526020600020905b8154815290600101906020018083116102b357829003601f168201915b5050505050905090565b6000336102e88185856103c8565b60019150505b92915050565b6000336103028582856103da565b61030d8585856104a9565b506001949350505050565b610320610554565b61032a82826105a7565b5050565b610336610554565b6103406000610603565b565b60606004805461025790610abe565b6000336102e88185856104a9565b610367610554565b73ffffffffffffffffffffffffffffffffffffffff81166103bc576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103c581610603565b50565b6103d5838383600161067a565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104a35781811015610494576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016103b3565b6104a38484848403600061067a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104f9576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b73ffffffffffffffffffffffffffffffffffffffff8216610549576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b6103d58383836107c2565b60055473ffffffffffffffffffffffffffffffffffffffff163314610340576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016103b3565b73ffffffffffffffffffffffffffffffffffffffff82166105f7576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b61032a600083836107c2565b6005805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff84166106ca576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b73ffffffffffffffffffffffffffffffffffffffff831661071a576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016103b3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020908152604080832093871683529290522082905580156104a3578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107b491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166107fa5780600260008282546107ef9190610b11565b909155506108ac9050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610880576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103b3565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166108d557600280548290039055610901565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161096091815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561099b5785810183015185820160400152820161097f565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109fe57600080fd5b919050565b60008060408385031215610a1657600080fd5b610a1f836109da565b946020939093013593505050565b600080600060608486031215610a4257600080fd5b610a4b846109da565b9250610a59602085016109da565b9150604084013590509250925092565b600060208284031215610a7b57600080fd5b610a84826109da565b9392505050565b60008060408385031215610a9e57600080fd5b610aa7836109da565b9150610ab5602084016109da565b90509250929050565b600181811c90821680610ad257607f821691505b602082108103610b0b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b808201808211156102ee577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea164736f6c6343000818000a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000a54657374444558426f740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035444420000000000000000000000000000000000000000000000000000000000