606060405260126006556000600790600019169055341561001f57600080fd5b604051602080611ef48339810160405280805190602001909190505080600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806000819055505033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a280600581600019169055505050611dca8061012a6000396000f30060606040523615610131576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461013657806307da68f514610167578063095ea7b31461017c57806313af4035146101d657806318160ddd1461020f57806323b872dd14610238578063313ce567146102b15780633452f51d146102da5780635ac801fe1461034657806369d3e20e1461036d57806370a08231146103a257806375f12b21146103ef5780637a9e5e4b1461041c5780638402181f146104555780638da5cb5b146104c157806390bc16931461051657806395d89b411461054b578063a9059cbb1461057c578063b414d4b6146105d6578063be9a655514610627578063bf7e214f1461063c578063dd62ed3e14610691578063e724529c146106fd575b600080fd5b341561014157600080fd5b610149610741565b60405180826000191660001916815260200191505060405180910390f35b341561017257600080fd5b61017a610747565b005b341561018757600080fd5b6101bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610847565b604051808215151515815260200191505060405180910390f35b34156101e157600080fd5b61020d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610921565b005b341561021a57600080fd5b610222610a00565b6040518082815260200191505060405180910390f35b341561024357600080fd5b610297600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a09565b604051808215151515815260200191505060405180910390f35b34156102bc57600080fd5b6102c4610a75565b6040518082815260200191505060405180910390f35b34156102e557600080fd5b61032c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610a7b565b604051808215151515815260200191505060405180910390f35b341561035157600080fd5b61036b600480803560001916906020019091905050610aa1565b005b341561037857600080fd5b6103a060048080356fffffffffffffffffffffffffffffffff16906020019091905050610ae5565b005b34156103ad57600080fd5b6103d9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ca6565b6040518082815260200191505060405180910390f35b34156103fa57600080fd5b610402610cef565b604051808215151515815260200191505060405180910390f35b341561042757600080fd5b610453600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d02565b005b341561046057600080fd5b6104a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356fffffffffffffffffffffffffffffffff16906020019091905050610de1565b604051808215151515815260200191505060405180910390f35b34156104cc57600080fd5b6104d4610e08565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052157600080fd5b61054960048080356fffffffffffffffffffffffffffffffff16906020019091905050610e2e565b005b341561055657600080fd5b61055e610fef565b60405180826000191660001916815260200191505060405180910390f35b341561058757600080fd5b6105bc600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ff5565b604051808215151515815260200191505060405180910390f35b34156105e157600080fd5b61060d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105f565b604051808215151515815260200191505060405180910390f35b341561063257600080fd5b61063a61107f565b005b341561064757600080fd5b61064f61117f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069c57600080fd5b6106e7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111a5565b6040518082815260200191505060405180910390f35b341561070857600080fd5b61073f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035151590602001909190505061122c565b005b60075481565b610775336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b151561077d57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46001600460146101000a81548160ff0219169083151502179055505050565b6000600460149054906101000a900460ff1615151561086257fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610917858561158d565b9250505092915050565b61094f336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b151561095757fe5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9460405160405180910390a250565b60008054905090565b6000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a6157fe5b610a6c84848461167f565b90509392505050565b60065481565b6000610a9983836fffffffffffffffffffffffffffffffff16610ff5565b905092915050565b610acf336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b1515610ad757fe5b806007816000191690555050565b610b13336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b1515610b1b57fe5b600460149054906101000a900460ff16151515610b3457fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610c3a600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff1661175b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610c9b600054846fffffffffffffffffffffffffffffffff1661175b565b600081905550505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600460149054906101000a900460ff1681565b610d30336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b1515610d3857fe5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada460405160405180910390a250565b6000610e008333846fffffffffffffffffffffffffffffffff16610a09565b905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e5c336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b1515610e6457fe5b600460149054906101000a900460ff16151515610e7d57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4610f83600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846fffffffffffffffffffffffffffffffff16611774565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fe4600054846fffffffffffffffffffffffffffffffff16611774565b600081905550505050565b60055481565b6000600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561104d57fe5b611057838361178d565b905092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b6110ad336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b15156110b557fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a46000600460146101000a81548160ff0219169083151502179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125a336000357fffffffff000000000000000000000000000000000000000000000000000000001661132c565b151561126257fe5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a58282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a15050565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136b5760019050611587565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113ca5760019050611587565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561142a5760009050611587565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b70096138430856000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019350505050602060405180830381600087803b151561156957600080fd5b6102c65a03f1151561157a57600080fd5b5050506040518051905090505b92915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600460149054906101000a900460ff1615151561169a57fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a4611750868686611867565b925050509392505050565b6000828284019150811015151561176e57fe5b92915050565b6000828284039150811115151561178757fe5b92915050565b6000600460149054906101000a900460ff161515156117a857fe5b60008060043591506024359050806000191682600019163373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19163460003660405180848152602001806020018281038252848482818152602001925080828437820191505094505050505060405180910390a461185d8585611bca565b9250505092915050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515156118b457fe5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561193c57fe5b6119c2600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611774565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a8b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611774565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b17600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361175b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515611c1757fe5b611c60600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611774565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cec600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361175b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a360019050929150505600a165627a7a723058202d72d346ebdd7a6879b3753537e920fc832b3d801e1461a1a52fe3f5a57873d800295444536861726500000000000000000000000000000000000000000000000000