6080604052670de0b6b3a76400006000196200001c9190620008a0565b6000196200002b919062000907565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f556001601060006101000a81548161ffff021916908361ffff1602179055506002601060026101000a81548161ffff021916908361ffff1602179055506002601060046101000a81548161ffff021916908361ffff160217905550601060049054906101000a900461ffff16601060029054906101000a900461ffff16601060009054906101000a900461ffff16620000f3919062000950565b620000ff919062000950565b601060066101000a81548161ffff021916908361ffff160217905550732b112388622a651e20af3d1278cc9a4246412403601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a6692840a09c4b924cdaeb0c01a6ef9e2dc4c124601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a6692840a09c4b924cdaeb0c01a6ef9e2dc4c124601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff021916908315150217905550662386f26fc10000601855662386f26fc100006019556601c6bf52634000601a553480156200027e57600080fd5b506000620002916200083660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620003466200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004509190620009f7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004de9190620009f7565b6040518363ffffffff1660e01b8152600401620004fd92919062000a3a565b6020604051808303816000875af11580156200051d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005439190620009f7565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620005996200083e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007c06200083660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405162000827919062000a78565b60405180910390a35062000a95565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008ad8262000867565b9150620008ba8362000867565b925082620008cd57620008cc62000871565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620009148262000867565b9150620009218362000867565b92508282039050818111156200093c576200093b620008d8565b5b92915050565b600061ffff82169050919050565b60006200095d8262000942565b91506200096a8362000942565b9250828201905061ffff811115620009875762000986620008d8565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009bf8262000992565b9050919050565b620009d181620009b2565b8114620009dd57600080fd5b50565b600081519050620009f181620009c6565b92915050565b60006020828403121562000a105762000a0f6200098d565b5b600062000a2084828501620009e0565b91505092915050565b62000a3481620009b2565b82525050565b600060408201905062000a51600083018562000a29565b62000a60602083018462000a29565b9392505050565b62000a728162000867565b82525050565b600060208201905062000a8f600083018462000a67565b92915050565b6147eb8062000aa56000396000f3fe6080604052600436106101fc5760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c492f0461161006f578063c492f046146106e1578063dd62ed3e1461070a578063ea1644d514610747578063ec424a7714610770578063f2fde38b1461079957610203565b8063a9059cbb14610639578063bfd7928414610676578063c3c8cd80146106b3578063c408c245146106ca57610203565b806391c65644116100dc57806391c656441461059357806395d89b41146105bc57806398a5c315146105e7578063a2a957bb1461061057610203565b80637d1db4a5146104d55780637f2feddc146105005780638da5cb5b1461053d5780638f9a55c01461056857610203565b80633daaa24f116101905780636fc3eaec1161015f5780636fc3eaec1461042a57806370a0823114610441578063715018a61461047e57806374010ece14610495578063751039fc146104be57610203565b80633daaa24f1461038257806349bd5a5e146103ad5780636b999053146103d85780636d8aa8f81461040157610203565b806318160ddd116101cc57806318160ddd146102c457806323b872dd146102ef5780632fd689e31461032c578063313ce5671461035757610203565b8062b8cf2a1461020857806306fdde0314610231578063095ea7b31461025c5780631694505e1461029957610203565b3661020357005b600080fd5b34801561021457600080fd5b5061022f600480360381019061022a9190613421565b6107c2565b005b34801561023d57600080fd5b506102466108ec565b60405161025391906134e9565b60405180910390f35b34801561026857600080fd5b50610283600480360381019061027e9190613541565b610929565b604051610290919061359c565b60405180910390f35b3480156102a557600080fd5b506102ae610947565b6040516102bb9190613616565b60405180910390f35b3480156102d057600080fd5b506102d961096d565b6040516102e69190613640565b60405180910390f35b3480156102fb57600080fd5b506103166004803603810190610311919061365b565b61097d565b604051610323919061359c565b60405180910390f35b34801561033857600080fd5b50610341610a56565b60405161034e9190613640565b60405180910390f35b34801561036357600080fd5b5061036c610a5c565b60405161037991906136ca565b60405180910390f35b34801561038e57600080fd5b50610397610a65565b6040516103a49190613706565b60405180910390f35b3480156103b957600080fd5b506103c2610a8b565b6040516103cf9190613730565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061374b565b610ab1565b005b34801561040d57600080fd5b50610428600480360381019061042391906137a4565b610ba1565b005b34801561043657600080fd5b5061043f610c53565b005b34801561044d57600080fd5b506104686004803603810190610463919061374b565b610d24565b6040516104759190613640565b60405180910390f35b34801561048a57600080fd5b50610493610d75565b005b3480156104a157600080fd5b506104bc60048036038101906104b791906137d1565b610ec8565b005b3480156104ca57600080fd5b506104d3610f67565b005b3480156104e157600080fd5b506104ea61101c565b6040516104f79190613640565b60405180910390f35b34801561050c57600080fd5b506105276004803603810190610522919061374b565b611022565b6040516105349190613640565b60405180910390f35b34801561054957600080fd5b5061055261103a565b60405161055f9190613730565b60405180910390f35b34801561057457600080fd5b5061057d611063565b60405161058a9190613640565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b59190613838565b611069565b005b3480156105c857600080fd5b506105d16111bd565b6040516105de91906134e9565b60405180910390f35b3480156105f357600080fd5b5061060e600480360381019061060991906137d1565b6111fa565b005b34801561061c57600080fd5b506106376004803603810190610632919061388b565b611299565b005b34801561064557600080fd5b50610660600480360381019061065b9190613541565b611494565b60405161066d919061359c565b60405180910390f35b34801561068257600080fd5b5061069d6004803603810190610698919061374b565b6114b2565b6040516106aa919061359c565b60405180910390f35b3480156106bf57600080fd5b506106c86114d2565b005b3480156106d657600080fd5b506106df6115ab565b005b3480156106ed57600080fd5b506107086004803603810190610703919061394d565b61165d565b005b34801561071657600080fd5b50610731600480360381019061072c91906139ad565b611797565b60405161073e9190613640565b60405180910390f35b34801561075357600080fd5b5061076e600480360381019061076991906137d1565b61181e565b005b34801561077c57600080fd5b50610797600480360381019061079291906139ed565b6118bd565b005b3480156107a557600080fd5b506107c060048036038101906107bb919061374b565b611a1a565b005b6107ca611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90613a8c565b60405180910390fd5b60005b81518110156108e85760016011600084848151811061087c5761087b613aac565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108e090613b0a565b91505061085a565b5050565b60606040518060400160405280600881526020017f307830736d617479000000000000000000000000000000000000000000000000815250905090565b600061093d610936611bdb565b8484611be3565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061098a848484611dac565b610a4b84610996611bdb565b610a468560405180606001604052806028815260200161478e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109fc611bdb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126319092919063ffffffff16565b611be3565b600190509392505050565b601a5481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3d90613a8c565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ba9611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2d90613a8c565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c94611bdb565b73ffffffffffffffffffffffffffffffffffffffff161480610d0a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cf2611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b610d1357600080fd5b6000479050610d2181612695565b50565b6000610d6e600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284f565b9050919050565b610d7d611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0190613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ed0611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490613a8c565b60405180910390fd5b8060188190555050565b610f6f611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff390613a8c565b60405180910390fd5b670de0b6b3a7640000601981905550670de0b6b3a7640000601881905550565b60185481565b60126020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60195481565b611071611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f590613a8c565b60405180910390fd5b82601060006101000a81548161ffff021916908361ffff16021790555081601060026101000a81548161ffff021916908361ffff16021790555080601060046101000a81548161ffff021916908361ffff160217905550601060049054906101000a900461ffff16601060029054906101000a900461ffff16601060009054906101000a900461ffff166111929190613b52565b61119c9190613b52565b601060066101000a81548161ffff021916908361ffff160217905550505050565b60606040518060400160405280600581526020017f736d617479000000000000000000000000000000000000000000000000000000815250905090565b611202611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461128f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128690613a8c565b60405180910390fd5b80601a8190555050565b6112a1611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132590613a8c565b60405180910390fd5b60008410158015611340575060048411155b61137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690613bfa565b60405180910390fd5b60008210158015611391575060638211155b6113d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c790613c8c565b60405180910390fd5b600083101580156113e2575060048311155b611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613d1e565b60405180910390fd5b60008110158015611433575060638111155b611472576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146990613db0565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006114a86114a1611bdb565b8484611dac565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611513611bdb565b73ffffffffffffffffffffffffffffffffffffffff1614806115895750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611571611bdb565b73ffffffffffffffffffffffffffffffffffffffff16145b61159257600080fd5b600061159d30610d24565b90506115a8816128bd565b50565b6115b3611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613a8c565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b611665611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613a8c565b60405180910390fd5b60005b8383905081101561179157816005600086868581811061171857611717613aac565b5b905060200201602081019061172d919061374b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061178990613b0a565b9150506116f5565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611826611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613a8c565b60405180910390fd5b8060198190555050565b6118c5611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613a8c565b60405180910390fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611a22611bdb565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa690613a8c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1590613e42565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4990613ed4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb890613f66565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d9f9190613640565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290613ff8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e819061408a565b60405180910390fd5b60008111611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec49061411c565b60405180910390fd5b611ed561103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f1361103a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561233057601760149054906101000a900460ff16611fd257611f6461103a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc8906141ae565b60405180910390fd5b5b601854811115612017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200e9061421a565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120bb5750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1906142ac565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146121a7576019548161215c84610d24565b61216691906142cc565b106121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614372565b60405180910390fd5b5b60006121b230610d24565b90506000601a54821015905060185482106121cd5760185491505b8080156121e75750601760159054906101000a900460ff16155b80156122415750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156122595750601760169054906101000a900460ff165b80156122af5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123055750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561232d57612313826128bd565b6000479050600081111561232b5761232a47612695565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061248a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156124895750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612498576000905061261f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125435750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561255b57600854600c81905550600954600d819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156126065750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561261e57600a54600c81905550600b54600d819055505b5b61262b84848484612b36565b50505050565b6000838311158290612679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267091906134e9565b60405180910390fd5b50600083856126889190614392565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060009054906101000a900461ffff1661ffff168461270691906143c6565b6127109190614437565b9081150290604051600060405180830381858888f1935050505015801561273b573d6000803e3d6000fd5b50601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601060069054906101000a900461ffff1661ffff16601060029054906101000a900461ffff1661ffff16846127ad91906143c6565b6127b79190614437565b9081150290604051600060405180830381858888f193505050501580156127e2573d6000803e3d6000fd5b50601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561284b573d6000803e3d6000fd5b5050565b6000600654821115612896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288d906144da565b60405180910390fd5b60006128a0612b63565b90506128b58184612b8e90919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156128f5576128f4613280565b5b6040519080825280602002602001820160405280156129235781602001602082028036833780820191505090505b509050308160008151811061293b5761293a613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061450f565b81600181518110612a1a57612a19613aac565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a8130601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611be3565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ae5959493929190614635565b600060405180830381600087803b158015612aff57600080fd5b505af1158015612b13573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80612b4457612b43612bd8565b5b612b4f848484612c15565b80612b5d57612b5c612de0565b5b50505050565b6000806000612b70612df4565b91509150612b878183612b8e90919063ffffffff16565b9250505090565b6000612bd083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e53565b905092915050565b6000600c54148015612bec57506000600d54145b612c1357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612c2787612eb6565b955095509550955095509550612c8586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d1a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d6681612fc6565b612d708483613083565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dcd9190613640565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612e28670de0b6b3a7640000600654612b8e90919063ffffffff16565b821015612e4657600654670de0b6b3a7640000935093505050612e4f565b81819350935050505b9091565b60008083118290612e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9191906134e9565b60405180910390fd5b5060008385612ea99190614437565b9050809150509392505050565b6000806000806000806000806000612ed38a600c54600d546130bd565b9250925092506000612ee3612b63565b90506000806000612ef68e878787613153565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612f6083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612631565b905092915050565b6000808284612f7791906142cc565b905083811015612fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb3906146db565b60405180910390fd5b8091505092915050565b6000612fd0612b63565b90506000612fe782846131dc90919063ffffffff16565b905061303b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f6890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61309882600654612f1e90919063ffffffff16565b6006819055506130b381600754612f6890919063ffffffff16565b6007819055505050565b6000806000806130e960646130db888a6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b905060006131136064613105888b6131dc90919063ffffffff16565b612b8e90919063ffffffff16565b9050600061313c8261312e858c612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061316c85896131dc90919063ffffffff16565b9050600061318386896131dc90919063ffffffff16565b9050600061319a87896131dc90919063ffffffff16565b905060006131c3826131b58587612f1e90919063ffffffff16565b612f1e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036131ee5760009050613250565b600082846131fc91906143c6565b905082848261320b9190614437565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061476d565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132b88261326f565b810181811067ffffffffffffffff821117156132d7576132d6613280565b5b80604052505050565b60006132ea613256565b90506132f682826132af565b919050565b600067ffffffffffffffff82111561331657613315613280565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133578261332c565b9050919050565b6133678161334c565b811461337257600080fd5b50565b6000813590506133848161335e565b92915050565b600061339d613398846132fb565b6132e0565b905080838252602082019050602084028301858111156133c0576133bf613327565b5b835b818110156133e957806133d58882613375565b8452602084019350506020810190506133c2565b5050509392505050565b600082601f8301126134085761340761326a565b5b813561341884826020860161338a565b91505092915050565b60006020828403121561343757613436613260565b5b600082013567ffffffffffffffff81111561345557613454613265565b5b613461848285016133f3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134a4578082015181840152602081019050613489565b60008484015250505050565b60006134bb8261346a565b6134c58185613475565b93506134d5818560208601613486565b6134de8161326f565b840191505092915050565b6000602082019050818103600083015261350381846134b0565b905092915050565b6000819050919050565b61351e8161350b565b811461352957600080fd5b50565b60008135905061353b81613515565b92915050565b6000806040838503121561355857613557613260565b5b600061356685828601613375565b92505060206135778582860161352c565b9150509250929050565b60008115159050919050565b61359681613581565b82525050565b60006020820190506135b1600083018461358d565b92915050565b6000819050919050565b60006135dc6135d76135d28461332c565b6135b7565b61332c565b9050919050565b60006135ee826135c1565b9050919050565b6000613600826135e3565b9050919050565b613610816135f5565b82525050565b600060208201905061362b6000830184613607565b92915050565b61363a8161350b565b82525050565b60006020820190506136556000830184613631565b92915050565b60008060006060848603121561367457613673613260565b5b600061368286828701613375565b935050602061369386828701613375565b92505060406136a48682870161352c565b9150509250925092565b600060ff82169050919050565b6136c4816136ae565b82525050565b60006020820190506136df60008301846136bb565b92915050565b60006136f08261332c565b9050919050565b613700816136e5565b82525050565b600060208201905061371b60008301846136f7565b92915050565b61372a8161334c565b82525050565b60006020820190506137456000830184613721565b92915050565b60006020828403121561376157613760613260565b5b600061376f84828501613375565b91505092915050565b61378181613581565b811461378c57600080fd5b50565b60008135905061379e81613778565b92915050565b6000602082840312156137ba576137b9613260565b5b60006137c88482850161378f565b91505092915050565b6000602082840312156137e7576137e6613260565b5b60006137f58482850161352c565b91505092915050565b600061ffff82169050919050565b613815816137fe565b811461382057600080fd5b50565b6000813590506138328161380c565b92915050565b60008060006060848603121561385157613850613260565b5b600061385f86828701613823565b935050602061387086828701613823565b925050604061388186828701613823565b9150509250925092565b600080600080608085870312156138a5576138a4613260565b5b60006138b38782880161352c565b94505060206138c48782880161352c565b93505060406138d58782880161352c565b92505060606138e68782880161352c565b91505092959194509250565b600080fd5b60008083601f84011261390d5761390c61326a565b5b8235905067ffffffffffffffff81111561392a576139296138f2565b5b60208301915083602082028301111561394657613945613327565b5b9250929050565b60008060006040848603121561396657613965613260565b5b600084013567ffffffffffffffff81111561398457613983613265565b5b613990868287016138f7565b935093505060206139a38682870161378f565b9150509250925092565b600080604083850312156139c4576139c3613260565b5b60006139d285828601613375565b92505060206139e385828601613375565b9150509250929050565b600080600060608486031215613a0657613a05613260565b5b6000613a1486828701613375565b9350506020613a2586828701613375565b9250506040613a3686828701613375565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613a76602083613475565b9150613a8182613a40565b602082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b158261350b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613b4757613b46613adb565b5b600182019050919050565b6000613b5d826137fe565b9150613b68836137fe565b9250828201905061ffff811115613b8257613b81613adb565b5b92915050565b7f4275792072657761726473206d757374206265206265747765656e203025206160008201527f6e64203425000000000000000000000000000000000000000000000000000000602082015250565b6000613be4602583613475565b9150613bef82613b88565b604082019050919050565b60006020820190508181036000830152613c1381613bd7565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3925000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c76602283613475565b9150613c8182613c1a565b604082019050919050565b60006020820190508181036000830152613ca581613c69565b9050919050565b7f53656c6c2072657761726473206d757374206265206265747765656e2030252060008201527f616e642034250000000000000000000000000000000000000000000000000000602082015250565b6000613d08602683613475565b9150613d1382613cac565b604082019050919050565b60006020820190508181036000830152613d3781613cfb565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3939250000000000000000000000000000000000000000000000000000000000602082015250565b6000613d9a602383613475565b9150613da582613d3e565b604082019050919050565b60006020820190508181036000830152613dc981613d8d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613e2c602683613475565b9150613e3782613dd0565b604082019050919050565b60006020820190508181036000830152613e5b81613e1f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613ebe602483613475565b9150613ec982613e62565b604082019050919050565b60006020820190508181036000830152613eed81613eb1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f50602283613475565b9150613f5b82613ef4565b604082019050919050565b60006020820190508181036000830152613f7f81613f43565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613fe2602583613475565b9150613fed82613f86565b604082019050919050565b6000602082019050818103600083015261401181613fd5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614074602383613475565b915061407f82614018565b604082019050919050565b600060208201905081810360008301526140a381614067565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614106602983613475565b9150614111826140aa565b604082019050919050565b60006020820190508181036000830152614135816140f9565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000614198603f83613475565b91506141a38261413c565b604082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000614204601c83613475565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000614296602383613475565b91506142a18261423a565b604082019050919050565b600060208201905081810360008301526142c581614289565b9050919050565b60006142d78261350b565b91506142e28361350b565b92508282019050808211156142fa576142f9613adb565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061435c602383613475565b915061436782614300565b604082019050919050565b6000602082019050818103600083015261438b8161434f565b9050919050565b600061439d8261350b565b91506143a88361350b565b92508282039050818111156143c0576143bf613adb565b5b92915050565b60006143d18261350b565b91506143dc8361350b565b92508282026143ea8161350b565b9150828204841483151761440157614400613adb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006144428261350b565b915061444d8361350b565b92508261445d5761445c614408565b5b828204905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006144c4602a83613475565b91506144cf82614468565b604082019050919050565b600060208201905081810360008301526144f3816144b7565b9050919050565b6000815190506145098161335e565b92915050565b60006020828403121561452557614524613260565b5b6000614533848285016144fa565b91505092915050565b6000819050919050565b600061456161455c6145578461453c565b6135b7565b61350b565b9050919050565b61457181614546565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6145ac8161334c565b82525050565b60006145be83836145a3565b60208301905092915050565b6000602082019050919050565b60006145e282614577565b6145ec8185614582565b93506145f783614593565b8060005b8381101561462857815161460f88826145b2565b975061461a836145ca565b9250506001810190506145fb565b5085935050505092915050565b600060a08201905061464a6000830188613631565b6146576020830187614568565b818103604083015261466981866145d7565b90506146786060830185613721565b6146856080830184613631565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006146c5601b83613475565b91506146d08261468f565b602082019050919050565b600060208201905081810360008301526146f4816146b8565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614757602183613475565b9150614762826146fb565b604082019050919050565b600060208201905081810360008301526147868161474a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202a1ab9d5f799a87f54d60d04c81be55c2ff5075aeca85011679b84db7d697ba664736f6c63430008110033