608060405234801561001057600080fd5b50614b8c806100206000396000f3006080604052600436106102bf576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806304433bbc146102e657806306fdde031461038f578063095ea7b31461041f5780630c08bf881461048457806310420bff146104b357806313b44d351461051657806318160ddd1461056d5780631ae97bd9146105985780631bd2f1d6146105c95780631c00930b146105fa5780631c031dd8146106255780631d1438481461067c5780631dfab65b146106d357806323b872dd1461071657806329c609391461079b5780632cbaef16146107ca5780632d0ab86d146107f5578063313ce56714610820578063375b74c314610851578063394d8f49146108a85780633af32abf146108d75780633f4ba83a146109325780634449fe70146109495780634d6bc04e146109745780634e71d92d1461099f578063579140f4146109ca5780635c975abb146109f957806363bd1d4a14610a285780636618846314610a4a57806366d49bab14610aaf57806370a0823114610adc5780637b10399914610b335780637e350f1914610b8a5780638456cb5914610c1a578063848f492514610c315780638da5cb5b14610c5c57806395d89b4114610cb357806399a5d74714610d43578063a4ced09d14610d84578063a51483f314610ddb578063a705f89314610e06578063a9059cbb14610e5d578063ae995b0a14610ec2578063b3d7149e14610eed578063c040e6b814610fae578063c0cac84514610fe7578063c0ee907c1461103e578063c78161db14611095578063d0cfef32146110ec578063d17ce7a914611143578063d73dd62314611176578063d8a3819b146111db578063db1e39e114611206578063dd62ed3e1461124b578063e531e946146112c2578063e678b66c146112ed578063ed4ae0e914611344578063fdfd9c1d14611373578063fec4ff17146113ce575b6001543660008037600080366000845af48015156102dc57600080fd5b3d6000803e3d6000f35b3480156102f257600080fd5b5061034d600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506113f9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561039b57600080fd5b506103a4611540565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103e45780820151818401526020810190506103c9565b50505050905090810190601f1680156104115780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561042b57600080fd5b5061046a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611552565b604051808215151515815260200191505060405180910390f35b34801561049057600080fd5b50610499611660565b604051808215151515815260200191505060405180910390f35b3480156104bf57600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061193d565b6040518082815260200191505060405180910390f35b34801561052257600080fd5b50610557600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a43565b6040518082815260200191505060405180910390f35b34801561057957600080fd5b50610582611a5b565b6040518082815260200191505060405180910390f35b3480156105a457600080fd5b506105c76004803603810190808035600019169060200190929190505050611a65565b005b3480156105d557600080fd5b506105f86004803603810190808035600019169060200190929190505050611b03565b005b34801561060657600080fd5b5061060f611ba1565b6040518082815260200191505060405180910390f35b34801561063157600080fd5b50610666600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ba7565b6040518082815260200191505060405180910390f35b34801561068857600080fd5b50610691611bbf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106df57600080fd5b50610714600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be5565b005b34801561072257600080fd5b50610781600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c83565b604051808215151515815260200191505060405180910390f35b3480156107a757600080fd5b506107b061205f565b604051808215151515815260200191505060405180910390f35b3480156107d657600080fd5b506107df612114565b6040518082815260200191505060405180910390f35b34801561080157600080fd5b5061080a61211a565b6040518082815260200191505060405180910390f35b34801561082c57600080fd5b50610835612120565b604051808260ff1660ff16815260200191505060405180910390f35b34801561085d57600080fd5b50610866612125565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108b457600080fd5b506108bd61214b565b604051808215151515815260200191505060405180910390f35b3480156108e357600080fd5b50610918600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061215e565b604051808215151515815260200191505060405180910390f35b34801561093e57600080fd5b50610947612210565b005b34801561095557600080fd5b5061095e612384565b6040518082815260200191505060405180910390f35b34801561098057600080fd5b5061098961238a565b6040518082815260200191505060405180910390f35b3480156109ab57600080fd5b506109b4612390565b6040518082815260200191505060405180910390f35b3480156109d657600080fd5b506109df612676565b604051808215151515815260200191505060405180910390f35b348015610a0557600080fd5b50610a0e612689565b604051808215151515815260200191505060405180910390f35b610a3061269c565b604051808215151515815260200191505060405180910390f35b348015610a5657600080fd5b50610a95600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a04565b604051808215151515815260200191505060405180910390f35b348015610abb57600080fd5b50610ada60048036038101908080359060200190929190505050612cb1565b005b348015610ae857600080fd5b50610b1d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612d4f565b6040518082815260200191505060405180910390f35b348015610b3f57600080fd5b50610b48612e03565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b9657600080fd5b50610b9f612e29565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bdf578082015181840152602081019050610bc4565b50505050905090810190601f168015610c0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c2657600080fd5b50610c2f612e7a565b005b348015610c3d57600080fd5b50610c46612fb9565b6040518082815260200191505060405180910390f35b348015610c6857600080fd5b50610c71612fbf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610cbf57600080fd5b50610cc8612fe5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610d08578082015181840152602081019050610ced565b50505050905090810190601f168015610d355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d4f57600080fd5b50610d6e60048036038101908080359060200190929190505050612ff7565b6040518082815260200191505060405180910390f35b348015610d9057600080fd5b50610dc5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613028565b6040518082815260200191505060405180910390f35b348015610de757600080fd5b50610df0613040565b6040518082815260200191505060405180910390f35b348015610e1257600080fd5b50610e47600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613046565b6040518082815260200191505060405180910390f35b348015610e6957600080fd5b50610ea8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061305e565b604051808215151515815260200191505060405180910390f35b348015610ece57600080fd5b50610ed761329f565b6040518082815260200191505060405180910390f35b348015610ef957600080fd5b50610f9460048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506132a4565b604051808215151515815260200191505060405180910390f35b348015610fba57600080fd5b50610fc36133f2565b60405180826008811115610fd357fe5b60ff16815260200191505060405180910390f35b348015610ff357600080fd5b50610ffc613405565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561104a57600080fd5b5061105361342a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110a157600080fd5b506110d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613450565b6040518082815260200191505060405180910390f35b3480156110f857600080fd5b5061112d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613468565b6040518082815260200191505060405180910390f35b34801561114f57600080fd5b50611158613480565b60405180826000191660001916815260200191505060405180910390f35b34801561118257600080fd5b506111c1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613486565b604051808215151515815260200191505060405180910390f35b3480156111e757600080fd5b506111f061369e565b6040518082815260200191505060405180910390f35b34801561121257600080fd5b50611231600480360381019080806040019091929192905050506136a4565b604051808215151515815260200191505060405180910390f35b34801561125757600080fd5b506112ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c62565b6040518082815260200191505060405180910390f35b3480156112ce57600080fd5b506112d7613ce9565b6040518082815260200191505060405180910390f35b3480156112f957600080fd5b5061132e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613cef565b6040518082815260200191505060405180910390f35b34801561135057600080fd5b50611359613e18565b604051808215151515815260200191505060405180910390f35b34801561137f57600080fd5b506113b4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e2b565b604051808215151515815260200191505060405180910390f35b3480156113da57600080fd5b506113e361406f565b6040518082815260200191505060405180910390f35b600080600060405180807f676574436f6e7472616374416464726573733332286279746573333229000000815250601d01905060405180910390209150836040516020018082805190602001908083835b60208310151561146f578051825260208201915060208101905060208303925061144a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156114d857805182526020820191506020810190506020830392506114b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050600254604051838152826004820152602081602483855afa80151561152b57600080fd5b81519550602482016040525050505050919050565b606061154d601554614074565b905090565b6000600d60009054906101000a900460ff1615151561157057600080fd5b81601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60006116a06040805190810160405280600a81526020017f506f614d616e61676572000000000000000000000000000000000000000000008152506113f9565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806117895750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561179457600080fd5b60078060088111156117a257fe5b600260149054906101000a900460ff1660088111156117bd57fe5b1415156117c957600080fd5b6117d36008614188565b6001600d60006101000a81548160ff02191690831515021790555061182c6040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f52cbcc26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156118f25780820151818401526020810190506118d7565b50505050905090810190601f16801561191f5780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505050600191505090565b6000806000601754146119d7576119d2670de0b6b3a76400006119c46119ad601960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460175461430b90919063ffffffff16565b6119b688612d4f565b61432490919063ffffffff16565b61435c90919063ffffffff16565b6119da565b60005b9050826119e75780611a3a565b611a39600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261437290919063ffffffff16565b5b91505092915050565b601b6020528060005260406000206000915090505481565b6000600754905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ac157600080fd5b6000806008811115611acf57fe5b600260149054906101000a900460ff166008811115611aea57fe5b141515611af657600080fd5b611aff8261438e565b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5f57600080fd5b6000806008811115611b6d57fe5b600260149054906101000a900460ff166008811115611b8857fe5b141515611b9457600080fd5b611b9d826143d0565b5050565b600a5481565b600b6020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c4157600080fd5b6000806008811115611c4f57fe5b600260149054906101000a900460ff166008811115611c6a57fe5b141515611c7657600080fd5b611c7f82614412565b5050565b6000600d60009054906101000a900460ff16151515611ca157600080fd5b82611cab8161215e565b1515611cb657600080fd5b84611cc08161215e565b1515611ccb57600080fd5b611cd586866144ef565b50600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151515611d1257600080fd5b611d1b86612d4f565b8411151515611d2957600080fd5b601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411151515611db457600080fd5b611e0684601a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e9b84601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6d84601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461430b90919063ffffffff16565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120bd57600080fd5b60008060088111156120cb57fe5b600260149054906101000a900460ff1660088111156120e657fe5b1415156120f257600080fd5b42600e5411151561210257600080fd5b61210c6001614188565b600191505090565b60145481565b60105481565b601281565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b600080600060405180807f77686974656c69737465642861646472657373290000000000000000000000008152506014019050604051809103902091506121d96040805190810160405280600981526020017f57686974656c69737400000000000000000000000000000000000000000000008152506113f9565b9050604051828152846004820152602081602483855afa8015156121fc57600080fd5b815194506024820160405250505050919050565b61224e6040805190810160405280600a81526020017f506f614d616e61676572000000000000000000000000000000000000000000008152506113f9565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122ea57600080fd5b600d60009054906101000a900460ff16151561230557600080fd5b600780600881111561231357fe5b600260149054906101000a900460ff16600881111561232e57fe5b14151561233a57600080fd5b6000600d60006101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a150565b60135481565b60175481565b600080600760088160088111156123a357fe5b600260149054906101000a900460ff1660088111156123be57fe5b14806123ee57508060088111156123d157fe5b600260149054906101000a900460ff1660088111156123ec57fe5b145b15156123f957600080fd5b61240433600161193d565b925060008311151561241557600080fd5b601754601960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156124e6573d6000803e3d6000fd5b506125256040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff163384604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527f1a1ac943000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b8381101561262a57808201518184015260208101905061260f565b50505050905090810190601f1680156126575780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150505082935050505090565b600d60019054906101000a900460ff1681565b600d60009054906101000a900460ff1681565b600080600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061274b5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561275657600080fd5b6007600881600881111561276657fe5b600260149054906101000a900460ff16600881111561278157fe5b14806127b1575080600881111561279457fe5b600260149054906101000a900460ff1660088111156127af57fe5b145b15156127bc57600080fd5b6127c534612ff7565b94506000851115156127d657600080fd5b6127e9853461430b90919063ffffffff16565b935061282e61281d60075461280f670de0b6b3a76400008861432490919063ffffffff16565b61435c90919063ffffffff16565b60175461437290919063ffffffff16565b601781905550612876670de0b6b3a764000060075461285e670de0b6b3a76400008861432490919063ffffffff16565b81151561286757fe5b0661435c90919063ffffffff16565b925061289361288e848761437290919063ffffffff16565b6146c5565b506128d26040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff166128fb848661430b90919063ffffffff16565b604051602401808281526020019150506040516020818303038152906040527f7c62f0a0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156129b557808201518184015260208101905061299a565b50505050905090810190601f1680156129e25780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150505060019550505050505090565b600080600d60009054906101000a900460ff16151515612a2357600080fd5b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612b31576000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bc5565b612b44838261430b90919063ffffffff16565b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d0d57600080fd5b6000806008811115612d1b57fe5b600260149054906101000a900460ff166008811115612d3657fe5b141515612d4257600080fd5b612d4b8261481e565b5050565b6000612dfc601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dee601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de086613cef565b61437290919063ffffffff16565b61430b90919063ffffffff16565b9050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060612e756005600280602002604051908101604052809291908260028015612e6b576020028201915b81546000191681526020019060010190808311612e53575b5050505050614860565b905090565b612eb86040805190810160405280600a81526020017f506f614d616e61676572000000000000000000000000000000000000000000008152506113f9565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f5457600080fd5b600d60009054906101000a900460ff16151515612f7057600080fd5b6001600d60006101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60115481565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060612ff2601654614074565b905090565b60006130216103e861301384600561432490919063ffffffff16565b61435c90919063ffffffff16565b9050919050565b601a6020528060005260406000206000915090505481565b60085481565b60096020528060005260406000206000915090505481565b6000600d60009054906101000a900460ff1615151561307c57600080fd5b826130868161215e565b151561309157600080fd5b3361309b8161215e565b15156130a657600080fd5b6130b033866144ef565b50600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156130ed57600080fd5b6130f633612d4f565b841115151561310457600080fd5b61315684601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131eb84601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a360019250505092915050565b600581565b6000600d60019054906101000a900460ff161515156132c257600080fd5b6132cb8761438e565b6132d4866143d0565b6132dd85614412565b6132e68461497e565b6132ef8261481e565b61332d6040805190810160405280600a81526020017f506f614d616e61676572000000000000000000000000000000000000000000008152506113f9565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60006101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff021916908315150217905550600190509695505050505050565b600260149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60196020528060005260406000206000915090505481565b600c6020528060005260406000206000915090505481565b60125481565b6000600d60009054906101000a900460ff161515156134a457600080fd5b61353382601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600e5481565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561370257600080fd5b8160028060200260405190810160405280929190826002602002808284378201915050505050606061373382614860565b9050602e815114151561374557600080fd5b60517f01000000000000000000000000000000000000000000000000000000000000000281600081518110151561377857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156137f157600080fd5b606d7f01000000000000000000000000000000000000000000000000000000000000000281600181518110151561382457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151561389d57600080fd5b6138a5612e29565b6040516020018082805190602001908083835b6020831015156138dd57805182526020820191506020810190506020830392506138b8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831015156139465780518252602082019150602081019050602083039250613921565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916816040516020018082805190602001908083835b6020831015156139b0578051825260208201915060208101905060208303925061398b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083101515613a1957805182526020820191506020810190506020830392506139f4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191614151515613a5757600080fd5b60076008811115613a6457fe5b600260149054906101000a900460ff166008811115613a7f57fe5b1480613ab0575060046008811115613a9357fe5b600260149054906101000a900460ff166008811115613aae57fe5b145b80613adf5750600880811115613ac257fe5b600260149054906101000a900460ff166008811115613add57fe5b145b1515613aea57600080fd5b836005906002613afb929190614af1565b50613b3a6040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff1684604051602401808260026020028082843782019150509150506040516020818303038152906040527fbbddd395000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b83811015613c14578082015181840152602081019050613bf9565b50505050905090810190601f168015613c415780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af191505050600192505050919050565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b600060076008811115613cfe57fe5b600260149054906101000a900460ff166008811115613d1957fe5b1015613d285760009050613e13565b613d3182614a5b565b15613d7d57600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050613e13565b613d8682614aa6565b15613e0e57613e07600a54613df9613dab60085460075461430b90919063ffffffff16565b600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461432490919063ffffffff16565b61435c90919063ffffffff16565b9050613e13565b600090505b919050565b600d60039054906101000a900460ff1681565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e8957600080fd5b613ec76040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001925050506040516020818303038152906040527f58af779b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b8381101561401a578082015181840152602081019050613fff565b50505050905090810190601f1680156140475780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1915050506140668261497e565b60019050919050565b600181565b606080600060206040519080825280601f01601f1916602001820160405280156140ad5781602001602082028038833980820191505090505b509150836020830152600090505b602081101561417b5760007f01000000000000000000000000000000000000000000000000000000000000000282828151811015156140f657fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561416e5761417b565b80806001019150506140bb565b8082528192505050919050565b80600260146101000a81548160ff021916908360088111156141a657fe5b02179055506141e96040805190810160405280600981526020017f506f614c6f6767657200000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff1681600881111561420b57fe5b604051602401808281526020019150506040516020818303038152906040527f22554804000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156142c55780820151818401526020810190506142aa565b50505050905090810190601f1680156142f25780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af19150505050565b600082821115151561431957fe5b818303905092915050565b6000808314156143375760009050614356565b818302905081838281151561434857fe5b0414151561435257fe5b8090505b92915050565b6000818381151561436957fe5b04905092915050565b6000818301905082811015151561438557fe5b80905092915050565b6000600102600019168160001916141515156143a957600080fd5b601554600019168160001916141515156143c257600080fd5b806015816000191690555050565b6000600102600019168160001916141515156143eb57600080fd5b6016546000191681600019161415151561440457600080fd5b806016816000191690555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561444e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156144ab57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061454d6144ff84600061193d565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601754601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146326145e483600061193d565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461437290919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601754601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001905092915050565b60006147056040805190810160405280600a81526020017f4665654d616e61676572000000000000000000000000000000000000000000008152506113f9565b73ffffffffffffffffffffffffffffffffffffffff16826040516024016040516020818303038152906040527f29610252000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405180828051906020019080838360005b838110156147cc5780820151818401526020810190506147b1565b50505050905090810190601f1680156147f95780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561481957600080fd5b919050565b670de0b6b3a7640000811015151561483557600080fd5b8060135410151561484557600080fd5b600754811415151561485657600080fd5b8060078190555050565b6060806000604080519080825280601f01601f1916602001820160405280156148985781602001602082028038833980820191505090505b5091508351602083015260208401516040830152600090505b60408110156149715760007f01000000000000000000000000000000000000000000000000000000000000000282828151811015156148ec57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561496457614971565b80806001019150506148b1565b8082528192505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156149ba57600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515614a1757600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b600080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054119050919050565b8260028101928215614b2a579160200282015b82811115614b2957823560001916829060001916905591602001919060010190614b04565b5b509050614b379190614b3b565b5090565b614b5d91905b80821115614b59576000816000905550600101614b41565b5090565b905600a165627a7a72305820ebfef799b63f9b9be47c78a7caaef64a7aaf1c884171b5b416fa524e2befb4fe0029