60606040526040805190810160405280600381526020017f312e3000000000000000000000000000000000000000000000000000000000008152506003908051906020019062000051929190620001be565b5060006009556000600a55610271600b5534156200006e57600080fd5b60405160408062001db68339810160405280805190602001909190805190602001909190505081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908315150217905550600060068190555060006007819055506200011f81620001ae6401000000000262001adf176401000000009004565b600881905550620001486301df5e76620001ae6401000000000262001adf176401000000009004565b600081905550600054600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000546008541115620001a657600080fd5b50506200026d565b60006012600a0a82029050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020157805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023157825182559160200191906001019062000214565b5b50905062000241919062000245565b5090565b6200026a91905b80821115620002665760008160009055506001016200024c565b5090565b90565b611b39806200027d6000396000f30060606040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610284578063095ea7b3146103125780630a9ffdb71461036c57806313b53153146103ae57806318160ddd146103db57806323b872dd1461040457806326a215751461047d578063313ce567146104a657806332513ce5146104cf5780634172d080146105245780634477c5da1461054d5780634a36df251461056257806354fd4d501461059b5780636fe3a5671461062957806370a0823114610652578063771282f61461069f578063775c46cd146106c85780638fd3ab80146106f457806395d89b411461070957806398e52f9a14610797578063a6f9dae1146107ba578063a81c3bdf146107f3578063a9059cbb14610848578063cb7b8673146108a2578063d648a647146108c5578063dd62ed3e146108ee578063e28d717b1461095a578063ff29507d1461096f575b6000600560149054906101000a900460ff16151561018757600080fd5b600034141561019557600080fd5b6006544310156101a457600080fd5b6007544311156101b357600080fd5b6101bf34600b54610998565b9050600854600954820111156101d457600080fd5b6101e0600954826109cb565b60098190555080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055503373ffffffffffffffffffffffffffffffffffffffff167f7ba26a0f068612fb882b3272004674d21fed286c2c8c795cf653044690b32db4826040518082815260200191505060405180910390a250005b341561028f57600080fd5b6102976109f5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031d57600080fd5b610352600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610a2e565b604051808215151515815260200191505060405180910390f35b341561037757600080fd5b6103ac600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b20565b005b34156103b957600080fd5b6103c1610ca1565b604051808215151515815260200191505060405180910390f35b34156103e657600080fd5b6103ee610cb4565b6040518082815260200191505060405180910390f35b341561040f57600080fd5b610463600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610cba565b604051808215151515815260200191505060405180910390f35b341561048857600080fd5b610490610f64565b6040518082815260200191505060405180910390f35b34156104b157600080fd5b6104b9610f6a565b6040518082815260200191505060405180910390f35b34156104da57600080fd5b6104e2610f6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561052f57600080fd5b610537610f95565b6040518082815260200191505060405180910390f35b341561055857600080fd5b610560610f9b565b005b341561056d57600080fd5b610599600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061102f565b005b34156105a657600080fd5b6105ae61112a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105ee5780820151818401526020810190506105d3565b50505050905090810190601f16801561061b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561063457600080fd5b61063c6111c8565b6040518082815260200191505060405180910390f35b341561065d57600080fd5b610689600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506111ce565b6040518082815260200191505060405180910390f35b34156106aa57600080fd5b6106b2611217565b6040518082815260200191505060405180910390f35b34156106d357600080fd5b6106f2600480803590602001909190803590602001909190505061121d565b005b34156106ff57600080fd5b6107076112dc565b005b341561071457600080fd5b61071c611537565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561075c578082015181840152602081019050610741565b50505050905090810190601f1680156107895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107a257600080fd5b6107b86004808035906020019091905050611570565b005b34156107c557600080fd5b6107f1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611639565b005b34156107fe57600080fd5b610806611713565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561085357600080fd5b610888600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611739565b604051808215151515815260200191505060405180910390f35b34156108ad57600080fd5b6108c360048080359060200190919050506118cd565b005b34156108d057600080fd5b6108d8611950565b6040518082815260200191505060405180910390f35b34156108f957600080fd5b610944600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611956565b6040518082815260200191505060405180910390f35b341561096557600080fd5b61096d6119dd565b005b341561097a57600080fd5b610982611ad9565b6040518082815260200191505060405180910390f35b600080828402905060008414806109b957508284828115156109b657fe5b04145b15156109c157fe5b8091505092915050565b60008082840190508381101580156109e35750828110155b15156109eb57fe5b8091505092915050565b6040805190810160405280600781526020017f5069546f6b656e0000000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7e57600080fd5b6000821415610b8c57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bc657600080fd5b610bda610bd283611adf565b600b54610998565b905060085460095482011115610bef57600080fd5b610bfb600954826109cb565b60098190555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff167f1aee3ddc9eba03c98b273cd914e999b78162e1ddd1c022045394f635a469e105826040518082815260200191505060405180910390a2505050565b600560149054906101000a900460ff1681565b60005481565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cf757600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d4557600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610dd057600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60095481565b601281565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ff757600080fd5b600560149054906101000a900460ff16151561101257600080fd5b6000600560146101000a81548160ff021916908315150217905550565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561108b57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110e657600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111c05780601f10611195576101008083540402835291602001916111c0565b820191906000526020600020905b8154815290600101906020018083116111a357829003601f168201915b505050505081565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561127957600080fd5b600560149054906101000a900460ff161561129357600080fd5b80821015156112a157600080fd5b81431015156112af57600080fd5b81600681905550806007819055506001600560146101000a81548160ff0219169083151502179055505050565b600080600560149054906101000a900460ff16156112f957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561135557600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915060008214156113a557600080fd5b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113f6600a54836109cb565b600a81905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663ad68ebf733846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114c357600080fd5b5af115156114d057600080fd5b5050506040518051905015156114e557600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fa59785389b00cbd19745afbe8d59b28e3161395c6b1e3525861a2b0dede0b90d836040518082815260200191505060405180910390a25050565b6040805190810160405280600281526020017f506900000000000000000000000000000000000000000000000000000000000081525081565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b6115d782611adf565b9050600854600954820111156115ec57600080fd5b6115f860085482611aef565b6008819055507f9ecdebfa921d6ab8cecf7259ef30327664ad0d45d32fa3641089b00b533f2eee816040518082815260200191505060405180910390a15050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561169557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156116cf57600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561177657600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156117c457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561192957600080fd5b600081141561193757600080fd5b600b5481141561194657600080fd5b80600b8190555050565b60065481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a3957600080fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311415611a5e57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501515611ad757600080fd5b565b60075481565b60006012600a0a82029050919050565b600080828410151515611afe57fe5b828403905080915050929150505600a165627a7a72305820655172fb992d0ec43c4e3144361d7c7d9c5ad7c4963d535f9bcd09d684cc54c00029000000000000000000000000c68f7883959feaccf030738495046a21fcdc77670000000000000000000000000000000000000000000000000000000001df5e76