0x60806040526000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005257600080fd5b5061006f61006461007460201b60201c565b61007c60201b60201c565b610140565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61212480620001506000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063a25983e511610071578063a25983e51461017b578063b425f802146101ab578063b9ef0830146101e1578063c7b1e3f214610211578063d68f4dd114610241578063f2fde38b14610277576100b4565b80630d87cedb146100b9578063715018a6146100d75780637a862593146100e15780637c405325146101115780638da5cb5b14610141578063956339b41461015f575b600080fd5b6100c1610293565b6040516100ce9190611cf9565b60405180910390f35b6100df6102da565b005b6100fb60048036038101906100f69190611853565b610362565b6040516101089190611cf9565b60405180910390f35b61012b60048036038101906101269190611942565b6104eb565b6040516101389190611bde565b60405180910390f35b61014961087a565b6040516101569190611af4565b60405180910390f35b610179600480360381019061017491906117e6565b6108a3565b005b610195600480360381019061019091906118c2565b6109d3565b6040516101a29190611bde565b60405180910390f35b6101c560048036038101906101c09190611813565b610a82565b6040516101d89796959493929190611b6f565b60405180910390f35b6101fb60048036038101906101f691906117e6565b610b1e565b6040516102089190611cf9565b60405180910390f35b61022b6004803603810190610226919061196f565b610b36565b6040516102389190611cf9565b60405180910390f35b61025b60048036038101906102569190611942565b610e86565b60405161026e9796959493929190611b6f565b60405180910390f35b610291600480360381019061028c91906117e6565b611143565b005b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6102e261123b565b73ffffffffffffffffffffffffffffffffffffffff1661030061087a565b73ffffffffffffffffffffffffffffffffffffffff1614610356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034d90611c59565b60405180910390fd5b6103606000611243565b565b600061036c61123b565b73ffffffffffffffffffffffffffffffffffffffff1661038a61087a565b73ffffffffffffffffffffffffffffffffffffffff16146103e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d790611c59565b60405180910390fd5b600082511180156103f3575060fa825111155b610432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042990611c99565b60405180910390fd5b60005b82518110156104df57600083828151811061045357610452611e67565b5b6020026020010151600001519050600084838151811061047657610475611e67565b5b602002602001015160200151905061049087838389611307565b507fd9da320f821ddc56f253d6a979afb4bfe1f2216dab1a98305828d0fc4441d20e8783836040516104c493929190611b0f565b60405180910390a15050806104d890611def565b9050610435565b50815190509392505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821061056e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056590611c19565b60405180910390fd5b60001515600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060050160149054906101000a900460ff16151514610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90611cb9565b60405180910390fd5b42600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000206003015411156106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290611cd9565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600201546040518363ffffffff1660e01b81526004016107b1929190611b46565b602060405180830381600087803b1580156107cb57600080fd5b505af11580156107df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108039190611915565b506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060050160146101000a81548160ff0219169083151502179055506001915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6108ab61123b565b73ffffffffffffffffffffffffffffffffffffffff166108c961087a565b73ffffffffffffffffffffffffffffffffffffffff161461091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091690611c59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690611c79565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808490508073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401610a1693929190611b0f565b602060405180830381600087803b158015610a3057600080fd5b505af1158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611915565b50610a7585338686611307565b5060019150509392505050565b6002602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060050160149054906101000a900460ff16905087565b60036020528060005260406000206000915090505481565b60003373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90611c39565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548310610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090611c19565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000209050600015158160050160149054906101000a900460ff16151514610cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cec90611cb9565b60405180910390fd5b4281600301541115610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390611cd9565b60405180910390fd5b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3384600201546040518363ffffffff1660e01b8152600401610da4929190611b46565b602060405180830381600087803b158015610dbe57600080fd5b505af1158015610dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df69190611915565b5060018260050160146101000a81548160ff0219169083151502179055507f09a3d926922a7f54f8d89f4473ab56557f2080af30e5e16e66df53aad7aabd368260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858460020154604051610e6f93929190611b0f565b60405180910390a181600201549250505092915050565b6000806000806000806000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060010154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060020154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060030154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060040154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008f815260200190815260200160002060050160149054906101000a900460ff169650965096509650965096509650919395979092949650565b61114b61123b565b73ffffffffffffffffffffffffffffffffffffffff1661116961087a565b73ffffffffffffffffffffffffffffffffffffffff16146111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690611c59565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561122f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122690611bf9565b60405180910390fd5b61123881611243565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000209050858160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160010181905550838160020181905550828160030181905550600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548160040181905550848160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008160050160146101000a81548160ff02191690831515021790555080600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481526020019081526020016000206000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600182015481600101556002820154816002015560038201548160030155600482015481600401556005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005820160149054906101000a900460ff168160050160146101000a81548160ff021916908315150217905550905050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906116a790611def565b91905055506001915050949350505050565b60006116cc6116c784611d39565b611d14565b905080838252602082019050828560408602820111156116ef576116ee611ecf565b5b60005b8581101561171f57816117058882611781565b8452602084019350604083019250506001810190506116f2565b5050509392505050565b600081359050611738816120a9565b92915050565b600082601f83011261175357611752611ec5565b5b81356117638482602086016116b9565b91505092915050565b60008151905061177b816120c0565b92915050565b60006040828403121561179757611796611eca565b5b6117a16040611d14565b905060006117b184828501611729565b60008301525060206117c5848285016117d1565b60208301525092915050565b6000813590506117e0816120d7565b92915050565b6000602082840312156117fc576117fb611ed9565b5b600061180a84828501611729565b91505092915050565b6000806040838503121561182a57611829611ed9565b5b600061183885828601611729565b9250506020611849858286016117d1565b9150509250929050565b60008060006060848603121561186c5761186b611ed9565b5b600061187a86828701611729565b935050602061188b868287016117d1565b925050604084013567ffffffffffffffff8111156118ac576118ab611ed4565b5b6118b88682870161173e565b9150509250925092565b6000806000606084860312156118db576118da611ed9565b5b60006118e986828701611729565b93505060206118fa868287016117d1565b925050604061190b868287016117d1565b9150509250925092565b60006020828403121561192b5761192a611ed9565b5b60006119398482850161176c565b91505092915050565b60006020828403121561195857611957611ed9565b5b6000611966848285016117d1565b91505092915050565b6000806040838503121561198657611985611ed9565b5b6000611994858286016117d1565b92505060206119a585828601611729565b9150509250929050565b6119b881611d76565b82525050565b6119c781611d88565b82525050565b60006119da602683611d65565b91506119e582611eef565b604082019050919050565b60006119fd601283611d65565b9150611a0882611f3e565b602082019050919050565b6000611a20602883611d65565b9150611a2b82611f67565b604082019050919050565b6000611a43602083611d65565b9150611a4e82611fb6565b602082019050919050565b6000611a66601f83611d65565b9150611a7182611fdf565b602082019050919050565b6000611a89604083611d65565b9150611a9482612008565b604082019050919050565b6000611aac601983611d65565b9150611ab782612057565b602082019050919050565b6000611acf601c83611d65565b9150611ada82612080565b602082019050919050565b611aee81611db4565b82525050565b6000602082019050611b0960008301846119af565b92915050565b6000606082019050611b2460008301866119af565b611b3160208301856119af565b611b3e6040830184611ae5565b949350505050565b6000604082019050611b5b60008301856119af565b611b686020830184611ae5565b9392505050565b600060e082019050611b84600083018a6119af565b611b916020830189611ae5565b611b9e6040830188611ae5565b611bab6060830187611ae5565b611bb86080830186611ae5565b611bc560a08301856119af565b611bd260c08301846119be565b98975050505050505050565b6000602082019050611bf360008301846119be565b92915050565b60006020820190508181036000830152611c12816119cd565b9050919050565b60006020820190508181036000830152611c32816119f0565b9050919050565b60006020820190508181036000830152611c5281611a13565b9050919050565b60006020820190508181036000830152611c7281611a36565b9050919050565b60006020820190508181036000830152611c9281611a59565b9050919050565b60006020820190508181036000830152611cb281611a7c565b9050919050565b60006020820190508181036000830152611cd281611a9f565b9050919050565b60006020820190508181036000830152611cf281611ac2565b9050919050565b6000602082019050611d0e6000830184611ae5565b92915050565b6000611d1e611d2f565b9050611d2a8282611dbe565b919050565b6000604051905090565b600067ffffffffffffffff821115611d5457611d53611e96565b5b602082029050602081019050919050565b600082825260208201905092915050565b6000611d8182611d94565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b611dc782611ede565b810181811067ffffffffffffffff82111715611de657611de5611e96565b5b80604052505050565b6000611dfa82611db4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611e2d57611e2c611e38565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4c6f636b20646f65736e27742065786973740000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f742074686520766f74652060008201527f636f6e7472616374000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6e6577206164647265737320697320746865207a65726f206164647265737300600082015250565b7f6e756d626572206f66206e6674206d757374206265206772656174657220746860008201527f616e203020616e64206c657373207468616e204d41585f494d505f434f554e54602082015250565b7f4c6f636b2077617320616c726561647920756e6c6f636b656400000000000000600082015250565b7f546f6b656e732063616e277420626520756e6c6f636b65642079657400000000600082015250565b6120b281611d76565b81146120bd57600080fd5b50565b6120c981611d88565b81146120d457600080fd5b50565b6120e081611db4565b81146120eb57600080fd5b5056fea26469706673582212202ee78854d3d3f697906e01be1f562347b785b8702af2c422d0dea8e27ae8a6d164736f6c63430008070033