60806040523480156200001157600080fd5b50600062000024620001d260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506012600a620000d2919062000374565b633b9aca00620000e39190620003c5565b60016000620000f7620001d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000145620001d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620001a4919062000374565b633b9aca00620001b59190620003c5565b604051620001c4919062000421565b60405180910390a36200043e565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620002685780860481111562000240576200023f620001da565b5b6001851615620002505780820291505b8081029050620002608562000209565b945062000220565b94509492505050565b60008262000283576001905062000356565b8162000293576000905062000356565b8160018114620002ac5760028114620002b757620002ed565b600191505062000356565b60ff841115620002cc57620002cb620001da565b5b8360020a915084821115620002e657620002e5620001da565b5b5062000356565b5060208310610133831016604e8410600b8410161715620003275782820a905083811115620003215762000320620001da565b5b62000356565b62000336848484600162000216565b9250905081840481111562000350576200034f620001da565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000381826200035d565b91506200038e8362000367565b9250620003bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000271565b905092915050565b6000620003d2826200035d565b9150620003df836200035d565b9250828202620003ef816200035d565b91508282048414831517620004095762000408620001da565b5b5092915050565b6200041b816200035d565b82525050565b600060208201905062000438600083018462000410565b92915050565b611b5b806200044e6000396000f3fe6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102a9578063dd62ed3e146102e6578063f2fde38b14610323578063fce0299a1461034c576100e8565b8063715018a61461023c5780638da5cb5b1461025357806395d89b411461027e576100e8565b806320800a00116100bb57806320800a001461018057806323b872dd14610197578063313ce567146101d457806370a08231146101ff576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610375565b60405161010f9190611164565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061121f565b6103b2565b60405161014c919061127a565b60405180910390f35b34801561016157600080fd5b5061016a6103d0565b60405161017791906112a4565b60405180910390f35b34801561018c57600080fd5b506101956103f4565b005b3480156101a357600080fd5b506101be60048036038101906101b991906112bf565b6104d9565b6040516101cb919061127a565b60405180910390f35b3480156101e057600080fd5b506101e96105b2565b6040516101f6919061132e565b60405180910390f35b34801561020b57600080fd5b5061022660048036038101906102219190611349565b6105bb565b60405161023391906112a4565b60405180910390f35b34801561024857600080fd5b50610251610604565b005b34801561025f57600080fd5b50610268610757565b6040516102759190611385565b60405180910390f35b34801561028a57600080fd5b50610293610780565b6040516102a09190611164565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb919061121f565b6107bd565b6040516102dd919061127a565b60405180910390f35b3480156102f257600080fd5b5061030d600480360381019061030891906113a0565b6107db565b60405161031a91906112a4565b60405180910390f35b34801561032f57600080fd5b5061034a60048036038101906103459190611349565b610862565b005b34801561035857600080fd5b50610373600480360381019061036e919061121f565b610a23565b005b60606040518060400160405280600681526020017f4e554d4245520000000000000000000000000000000000000000000000000000815250905090565b60006103c66103bf610b42565b8484610b4a565b6001905092915050565b60006012600a6103e09190611542565b633b9aca006103ef919061158d565b905090565b6103fc610b42565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104809061161b565b60405180910390fd5b610491610757565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156104d6573d6000803e3d6000fd5b50565b60006104e6848484610d13565b6105a7846104f2610b42565b6105a285604051806060016040528060288152602001611afe60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610558610b42565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fc89092919063ffffffff16565b610b4a565b600190509392505050565b60006012905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61060c610b42565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106909061161b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4e554d4245520000000000000000000000000000000000000000000000000000815250905090565b60006107d16107ca610b42565b8484610d13565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61086a610b42565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee9061161b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095d906116ad565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610a2b610b42565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaf9061161b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610adc610757565b836040518363ffffffff1660e01b8152600401610afa9291906116cd565b6020604051808303816000875af1158015610b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3d9190611722565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb0906117c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f90611853565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d0691906112a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d79906118e5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890611977565b60405180910390fd5b60008111610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90611a09565b60405180910390fd5b610e8681600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461102c90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f1b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461107690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610fbb91906112a4565b60405180910390a3505050565b6000838311158290611010576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110079190611164565b60405180910390fd5b506000838561101f9190611a29565b9050809150509392505050565b600061106e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc8565b905092915050565b60008082846110859190611a5d565b9050838110156110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190611add565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561110e5780820151818401526020810190506110f3565b60008484015250505050565b6000601f19601f8301169050919050565b6000611136826110d4565b61114081856110df565b93506111508185602086016110f0565b6111598161111a565b840191505092915050565b6000602082019050818103600083015261117e818461112b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111b68261118b565b9050919050565b6111c6816111ab565b81146111d157600080fd5b50565b6000813590506111e3816111bd565b92915050565b6000819050919050565b6111fc816111e9565b811461120757600080fd5b50565b600081359050611219816111f3565b92915050565b6000806040838503121561123657611235611186565b5b6000611244858286016111d4565b92505060206112558582860161120a565b9150509250929050565b60008115159050919050565b6112748161125f565b82525050565b600060208201905061128f600083018461126b565b92915050565b61129e816111e9565b82525050565b60006020820190506112b96000830184611295565b92915050565b6000806000606084860312156112d8576112d7611186565b5b60006112e6868287016111d4565b93505060206112f7868287016111d4565b92505060406113088682870161120a565b9150509250925092565b600060ff82169050919050565b61132881611312565b82525050565b6000602082019050611343600083018461131f565b92915050565b60006020828403121561135f5761135e611186565b5b600061136d848285016111d4565b91505092915050565b61137f816111ab565b82525050565b600060208201905061139a6000830184611376565b92915050565b600080604083850312156113b7576113b6611186565b5b60006113c5858286016111d4565b92505060206113d6858286016111d4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561146657808604811115611442576114416113e0565b5b60018516156114515780820291505b808102905061145f8561140f565b9450611426565b94509492505050565b60008261147f576001905061153b565b8161148d576000905061153b565b81600181146114a357600281146114ad576114dc565b600191505061153b565b60ff8411156114bf576114be6113e0565b5b8360020a9150848211156114d6576114d56113e0565b5b5061153b565b5060208310610133831016604e8410600b84101617156115115782820a90508381111561150c5761150b6113e0565b5b61153b565b61151e848484600161141c565b92509050818404811115611535576115346113e0565b5b81810290505b9392505050565b600061154d826111e9565b915061155883611312565b92506115857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461146f565b905092915050565b6000611598826111e9565b91506115a3836111e9565b92508282026115b1816111e9565b915082820484148315176115c8576115c76113e0565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006116056020836110df565b9150611610826115cf565b602082019050919050565b60006020820190508181036000830152611634816115f8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006116976026836110df565b91506116a28261163b565b604082019050919050565b600060208201905081810360008301526116c68161168a565b9050919050565b60006040820190506116e26000830185611376565b6116ef6020830184611295565b9392505050565b6116ff8161125f565b811461170a57600080fd5b50565b60008151905061171c816116f6565b92915050565b60006020828403121561173857611737611186565b5b60006117468482850161170d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006117ab6024836110df565b91506117b68261174f565b604082019050919050565b600060208201905081810360008301526117da8161179e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061183d6022836110df565b9150611848826117e1565b604082019050919050565b6000602082019050818103600083015261186c81611830565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006118cf6025836110df565b91506118da82611873565b604082019050919050565b600060208201905081810360008301526118fe816118c2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006119616023836110df565b915061196c82611905565b604082019050919050565b6000602082019050818103600083015261199081611954565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006119f36029836110df565b91506119fe82611997565b604082019050919050565b60006020820190508181036000830152611a22816119e6565b9050919050565b6000611a34826111e9565b9150611a3f836111e9565b9250828203905081811115611a5757611a566113e0565b5b92915050565b6000611a68826111e9565b9150611a73836111e9565b9250828201905080821115611a8b57611a8a6113e0565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611ac7601b836110df565b9150611ad282611a91565b602082019050919050565b60006020820190508181036000830152611af681611aba565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220272c612337129d9559b69ff9dd40f3889493ab1e6056b485c7e86c5faf02e3cd64736f6c63430008130033