0x60806040523480156200001157600080fd5b5060405162001a6538038062001a65833981810160405260e08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508660009080519060200190620001d192919062000276565b5085600281905550846003819055508360048190555033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000325565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b957805160ff1916838001178555620002ea565b82800160010185558215620002ea579182015b82811115620002e9578251825591602001919060010190620002cc565b5b509050620002f99190620002fd565b5090565b6200032291905b808211156200031e57600081600090555060010162000304565b5090565b90565b61173080620003356000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80638a623d861161008c578063b22fa42811610066578063b22fa428146102f2578063d102072f1461034a578063debdf31f14610378578063f7c618c1146103d0576100ea565b80638a623d861461029c5780638ae39cac146102a6578063a694fc3a146102c4576100ea565b806366b7cf1c116100c857806366b7cf1c146101da57806374f237c414610232578063817b1cd21461026057806386f94aea1461027e576100ea565b80630653e602146100ef57806306fdde031461010d57806351ed6a3014610190575b600080fd5b6100f761041a565b6040518082815260200191505060405180910390f35b610115610420565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561015557808201518184015260208101905061013a565b50505050905090810190601f1680156101825780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986104be565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61021c600480360360208110156101f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104e4565b6040518082815260200191505060405180910390f35b61025e6004803603602081101561024857600080fd5b810190808035906020019092919050505061052d565b005b610268610602565b6040518082815260200191505060405180910390f35b610286610608565b6040518082815260200191505060405180910390f35b6102a461060e565b005b6102ae61083d565b6040518082815260200191505060405180910390f35b6102f0600480360360208110156102da57600080fd5b8101908080359060200190929190505050610843565b005b6103346004803603602081101561030857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a21565b6040518082815260200191505060405180910390f35b6103766004803603602081101561036057600080fd5b8101908080359060200190929190505050610a6a565b005b6103ba6004803603602081101561038e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c38565b6040518082815260200191505060405180910390f35b6103d8610d2c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60035481565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104b65780601f1061048b576101008083540402835291602001916104b6565b820191906000526020600020905b81548152906001019060200180831161049957829003601f168201915b505050505081565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f6e6c7920636f6e7374727563746f722063616e20646f20746869730000000081525060200191505060405180910390fd5b6105f8610d52565b8060048190555050565b60015481565b60025481565b61061733610db5565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4e6f7468696e6720746f20636c61696d0000000000000000000000000000000081525060200191505060405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b505050506040513d602081101561082857600080fd5b81019080805190602001909291905050505050565b60045481565b61084c33610fed565b61085533610db5565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561093257600080fd5b505af1158015610946573d6000803e3d6000fd5b505050506040513d602081101561095c57600080fd5b8101908080519060200190929190505050506109c081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110690919063ffffffff16565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a188160015461110690919063ffffffff16565b60018190555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a7333610db5565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610c2b576000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bed57600080fd5b505af1158015610c01573d6000803e3d6000fd5b505050506040513d6020811015610c1757600080fd5b810190808051906020019092919050505050505b610c35338261118e565b50565b6000610d25600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d17610cd26000610ccd600b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611374565b6113b1565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113ca565b61110690919063ffffffff16565b9050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008090505b600d80549050811015610db257610da5600d8281548110610d7557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610db5565b8080600101915050610d58565b50565b6000610dff600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611374565b905060008111610e0f5750610fea565b43600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000610eef600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ee184600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113ca565b61110690919063ffffffff16565b9050610f186064610f0a605f8461142190919063ffffffff16565b6114a790919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f826064610f7460058461142190919063ffffffff16565b6114a790919063ffffffff16565b600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b50565b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561104457611103565b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600d8190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600080828401905083811015611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6111e081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f190919063ffffffff16565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561127057600080fd5b611285816001546114f190919063ffffffff16565b600181905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d602081101561135e57600080fd5b8101908080519060200190929190505050505050565b600080611383836002546113b1565b905060006113934360035461153b565b9050808210156113a5578181036113a8565b60005b92505050919050565b60008183116113c057816113c2565b825b905092915050565b6000808214156113dd576000905061141b565b61141860015461140a6004546113fc868861142190919063ffffffff16565b61142190919063ffffffff16565b6114a790919063ffffffff16565b90505b92915050565b60008083141561143457600090506114a1565b600082840290508284828161144557fe5b041461149c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806116db6021913960400191505060405180910390fd5b809150505b92915050565b60006114e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611554565b905092915050565b600061153383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061161a565b905092915050565b600081831061154a578161154c565b825b905092915050565b60008083118290611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156115c55780820151818401526020810190506115aa565b50505050905090810190601f1680156115f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161160c57fe5b049050809150509392505050565b60008383111582906116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561168c578082015181840152602081019050611671565b50505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838503905080915050939250505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582064759577d35db7c3d6270701e00ef368f48074e6560a1734e49415a198f42aa964736f6c6343000511003200000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000a80d100000000000000000000000000000000000000000000000000000000000aae047000000000000000000000000000000000000000000000006c6b935b8bbd400000000000000000000000000000316155671a6b372d68323ec798f597675110896000000000000000000000000df4aa141031e85468137ed125749c4f6a57f8f5b000000000000000000000000b6c88b7e5ca43040f0d11175c7191a91fe66ddf80000000000000000000000000000000000000000000000000000000000000009635f6d785f706f6f6c0000000000000000000000000000000000000000000000