60806040525f80555f60015534801562000017575f80fd5b506012600a6200002891906200034c565b6402540be4006200003a91906200039c565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200018b91906200034c565b6402540be4006200019d91906200039c565b604051620001ac9190620003f7565b60405180910390a362000412565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000244578086048111156200021c576200021b620001ba565b5b60018516156200022c5780820291505b80810290506200023c85620001e7565b9450620001fc565b94509492505050565b5f826200025e576001905062000330565b816200026d575f905062000330565b81600181146200028657600281146200029157620002c7565b600191505062000330565b60ff841115620002a657620002a5620001ba565b5b8360020a915084821115620002c057620002bf620001ba565b5b5062000330565b5060208310610133831016604e8410600b8410161715620003015782820a905083811115620002fb57620002fa620001ba565b5b62000330565b620003108484846001620001f3565b925090508184048111156200032a5762000329620001ba565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620003588262000337565b9150620003658362000340565b9250620003947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200024d565b905092915050565b5f620003a88262000337565b9150620003b58362000337565b9250828202620003c58162000337565b91508282048414831517620003df57620003de620001ba565b5b5092915050565b620003f18162000337565b82525050565b5f6020820190506200040c5f830184620003e6565b92915050565b61144780620004205f395ff3fe60806040526004361061009f575f3560e01c806370a082311161006357806370a08231146101a057806395d89b41146101dc578063a9059cbb14610206578063c9567bf914610242578063dd62ed3e14610258578063ea30d3d714610294576100a6565b806306fdde03146100aa578063095ea7b3146100d457806318160ddd1461011057806323b872dd1461013a578063313ce56714610176576100a6565b366100a657005b5f80fd5b3480156100b5575f80fd5b506100be6102bc565b6040516100cb9190610d38565b60405180910390f35b3480156100df575f80fd5b506100fa60048036038101906100f59190610de9565b6102f5565b6040516101079190610e41565b60405180910390f35b34801561011b575f80fd5b506101246103e2565b6040516101319190610e69565b60405180910390f35b348015610145575f80fd5b50610160600480360381019061015b9190610e82565b610403565b60405161016d9190610e41565b60405180910390f35b348015610181575f80fd5b5061018a6104a6565b6040516101979190610eed565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190610f06565b6104ab565b6040516101d39190610e69565b60405180910390f35b3480156101e7575f80fd5b506101f06104c0565b6040516101fd9190610d38565b60405180910390f35b348015610211575f80fd5b5061022c60048036038101906102279190610de9565b6104f9565b6040516102399190610e41565b60405180910390f35b34801561024d575f80fd5b5061025661050d565b005b348015610263575f80fd5b5061027e60048036038101906102799190610f31565b61058e565b60405161028b9190610e69565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190610f6f565b6105ae565b005b6040518060400160405280600781526020017f504f524b494e550000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103d09190610e69565b60405180910390a36001905092915050565b6012600a6103f09190611109565b6402540be4006104009190611153565b81565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461048b9190611194565b9250508190555061049d84848461060a565b90509392505050565b601281565b6002602052805f5260405f205f915090505481565b6040518060400160405280600781526020017f504f524b494e550000000000000000000000000000000000000000000000000081525081565b5f61050533848461060a565b905092915050565b738bc0bf6a936b78dba6102774fb17179d7b8b07eb73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610558575f80fd5b600460159054906101000a900460ff1615610571575f80fd5b6001600460156101000a81548160ff021916908315150217905550565b6003602052815f5260405f20602052805f5260405f205f91509150505481565b738bc0bf6a936b78dba6102774fb17179d7b8b07eb73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f9575f80fd5b815f81905550806001819055505050565b5f600460159054906101000a900460ff16806106655750738bc0bf6a936b78dba6102774fb17179d7b8b07eb73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b806106af5750738bc0bf6a936b78dba6102774fb17179d7b8b07eb73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6106b7575f80fd5b600460159054906101000a900460ff1615801561072057505f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561072b57505f82115b15610771578260045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107bd9190611194565b9250508190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561082d5750600460149054906101000a900460ff16155b801561089f575060646012600a6108449190611109565b6402540be4006108549190611153565b61085e91906111f4565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b15610adc576001600460146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156108db576108da611224565b5b6040519080825280602002602001820160405280156109095781602001602082028036833780820191505090505b50905030815f815181106109205761091f611251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061098357610982611251565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94760646012600a6109fd9190611109565b6402540be400610a0d9190611153565b610a1791906111f4565b5f8430426040518663ffffffff1660e01b8152600401610a3b959493929190611386565b5f604051808303815f87803b158015610a52575f80fd5b505af1158015610a64573d5f803e3d5ffd5b50505050738bc0bf6a936b78dba6102774fb17179d7b8b07eb73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610abf573d5f803e3d5ffd5b505f600460146101000a81548160ff021916908315150217905550505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614610beb575f605f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610b6e57600154610b71565b5f545b84610b7c9190611153565b610b8691906111f4565b90508083610b949190611194565b92508060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610be291906113de565b92505081905550505b8160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3791906113de565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c9b9190610e69565b60405180910390a3600190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610ce5578082015181840152602081019050610cca565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d0a82610cae565b610d148185610cb8565b9350610d24818560208601610cc8565b610d2d81610cf0565b840191505092915050565b5f6020820190508181035f830152610d508184610d00565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d8582610d5c565b9050919050565b610d9581610d7b565b8114610d9f575f80fd5b50565b5f81359050610db081610d8c565b92915050565b5f819050919050565b610dc881610db6565b8114610dd2575f80fd5b50565b5f81359050610de381610dbf565b92915050565b5f8060408385031215610dff57610dfe610d58565b5b5f610e0c85828601610da2565b9250506020610e1d85828601610dd5565b9150509250929050565b5f8115159050919050565b610e3b81610e27565b82525050565b5f602082019050610e545f830184610e32565b92915050565b610e6381610db6565b82525050565b5f602082019050610e7c5f830184610e5a565b92915050565b5f805f60608486031215610e9957610e98610d58565b5b5f610ea686828701610da2565b9350506020610eb786828701610da2565b9250506040610ec886828701610dd5565b9150509250925092565b5f60ff82169050919050565b610ee781610ed2565b82525050565b5f602082019050610f005f830184610ede565b92915050565b5f60208284031215610f1b57610f1a610d58565b5b5f610f2884828501610da2565b91505092915050565b5f8060408385031215610f4757610f46610d58565b5b5f610f5485828601610da2565b9250506020610f6585828601610da2565b9150509250929050565b5f8060408385031215610f8557610f84610d58565b5b5f610f9285828601610dd5565b9250506020610fa385828601610dd5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561102f5780860481111561100b5761100a610fad565b5b600185161561101a5780820291505b808102905061102885610fda565b9450610fef565b94509492505050565b5f826110475760019050611102565b81611054575f9050611102565b816001811461106a5760028114611074576110a3565b6001915050611102565b60ff84111561108657611085610fad565b5b8360020a91508482111561109d5761109c610fad565b5b50611102565b5060208310610133831016604e8410600b84101617156110d85782820a9050838111156110d3576110d2610fad565b5b611102565b6110e58484846001610fe6565b925090508184048111156110fc576110fb610fad565b5b81810290505b9392505050565b5f61111382610db6565b915061111e83610ed2565b925061114b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611038565b905092915050565b5f61115d82610db6565b915061116883610db6565b925082820261117681610db6565b9150828204841483151761118d5761118c610fad565b5b5092915050565b5f61119e82610db6565b91506111a983610db6565b92508282039050818111156111c1576111c0610fad565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6111fe82610db6565b915061120983610db6565b925082611219576112186111c7565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f6112aa6112a56112a08461127e565b611287565b610db6565b9050919050565b6112ba81611290565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6112f281610d7b565b82525050565b5f61130383836112e9565b60208301905092915050565b5f602082019050919050565b5f611325826112c0565b61132f81856112ca565b935061133a836112da565b805f5b8381101561136a57815161135188826112f8565b975061135c8361130f565b92505060018101905061133d565b5085935050505092915050565b61138081610d7b565b82525050565b5f60a0820190506113995f830188610e5a565b6113a660208301876112b1565b81810360408301526113b8818661131b565b90506113c76060830185611377565b6113d46080830184610e5a565b9695505050505050565b5f6113e882610db6565b91506113f383610db6565b925082820190508082111561140b5761140a610fad565b5b9291505056fea2646970667358221220f9d229156ba9db07ccaba7a59b60169b539159282f008802edf3ba7da59231f264736f6c63430008140033