0x608060405260405160408062001a51833981018060405262000025919081019062000255565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000c082620000c8640100000000026401000000009004565b5050620002b6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200012557600080fd5b6200013f8162000142640100000000026401000000009004565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156200017f57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006200024d825162000296565b905092915050565b600080604083850312156200026957600080fd5b600062000279858286016200023f565b92505060206200028c858286016200023f565b9150509250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b61178b80620002c66000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633018205f1461010b57806343254ae2146101365780636faf372414610173578063715018a61461019c578063825d29d7146101b35780638da5cb5b146101dc57806392eefe9b14610207578063a93b5b7b14610230578063ab957edf14610259578063c6144e3914610296578063d4f5dc94146102d3578063ee8bd82d146102fc578063f2fde38b14610339578063f77c479114610362575b7fbfe611b001dfcd411432f7bf0d79b82b4b2ee81511edac123a3403c357fb972a3334604051610101929190611503565b60405180910390a1005b34801561011757600080fd5b5061012061038d565b60405161012d91906114bf565b60405180910390f35b34801561014257600080fd5b5061015d6004803603610158919081019061131c565b6103b6565b60405161016a919061152c565b60405180910390f35b34801561017f57600080fd5b5061019a6004803603610195919081019061131c565b6104f0565b005b3480156101a857600080fd5b506101b161065f565b005b3480156101bf57600080fd5b506101da60048036036101d591908101906112b7565b610764565b005b3480156101e857600080fd5b506101f1610806565b6040516101fe91906114bf565b60405180910390f35b34801561021357600080fd5b5061022e600480360361022991908101906111d2565b61082c565b005b34801561023c57600080fd5b50610257600480360361025291908101906111d2565b61096f565b005b34801561026557600080fd5b50610280600480360361027b91908101906111fb565b610a47565b60405161028d9190611547565b60405180910390f35b3480156102a257600080fd5b506102bd60048036036102b891908101906112b7565b610bb5565b6040516102ca919061152c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036036102f59190810190611276565b610bd5565b005b34801561030857600080fd5b50610323600480360361031e91908101906112e0565b610c1b565b60405161033091906114bf565b60405180910390f35b34801561034557600080fd5b50610360600480360361035b91908101906111d2565b610c82565b005b34801561036e57600080fd5b50610377610cea565b60405161038491906114bf565b60405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080606060008060006103c8610e0b565b600080896000015197508960200151965089604001519550896080015194508960a001519350896060015192506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614151561045057600080fd5b61045c88888887610a47565b915061046782610764565b6104718284610c1b565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da906115c7565b60405180910390fd5b5050505050505050919050565b60006060600080846000015193508460200151925084604001519150846080015190507f74d34c6fe876d2d910521ea7c31bdea6530879732d5e8fa3781ce25171fa176084826040516105449291906114da565b60405180910390a1610555856103b6565b508373ffffffffffffffffffffffffffffffffffffffff16828460405180828051906020019080838360005b8381101561059c578082015181840152602081019050610581565b50505050905090810190601f1680156105c95780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af192505050151561061f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610616906115e7565b60405180910390fd5b7f9ae6eab77ab97680a0708bbb21af686ae24276636c6aa70f8a02f4cccd49499b84826040516106509291906114da565b60405180910390a15050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106bb57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60026000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156107cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c6906115a7565b60405180910390fd5b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f4f7b0265dc15e282f56ae0820603286a6547460256b0fe068e6ed578cb3d8bb68160405161085b91906114bf565b60405180910390a16000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561093457806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5c4387c894a24bbdaab0ebb3e90d2d0f0d1900a6b4878e87c1fc3bfe75c1f0df8160405161092791906114bf565b60405180910390a161096c565b7f6e7c18ac33fbdcd4f970e95dbb26c2f291e243f724c43b33c701f00f758265138160405161096391906114bf565b60405180910390a15b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109cb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7ff49ea4242b214f743eaa846fbc26ad4cf2b654f6929fbcc8102b71f7b96ad18133604051610a3c9291906114da565b60405180910390a150565b60008085858585604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184805190602001908083835b602083101515610ac45780518252602082019150602081019050602083039250610a9f565b6001836020036101000a038019825116818451168082178552505050505050905001838152602001828152602001945050505050604051809103902090506040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250816040518083805190602001908083835b602083101515610b6e5780518252602082019150602081019050602083039250610b49565b6001836020036101000a0380198251168184511680821785525050505050509050018260001916600019168152602001925050506040518091039020915050949350505050565b60026020528060005260406000206000915054906101000a900460ff1681565b60008090505b81518160ff161015610c1757610c0a828260ff16815181101515610bfb57fe5b906020019060200201516104f0565b8080600101915050610bdb565b5050565b600060018383600001518460200151856040015160405160008152602001604052604051610c4c9493929190611562565b60206040516020810390808403906000865af1158015610c70573d6000803e3d6000fd5b50505060206040510351905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cde57600080fd5b610ce781610d0f565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610d4b57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060405190810160405280600060ff16815260200160008019168152602001600080191681525090565b6000610e428235611701565b905092915050565b600082601f8301121515610e5d57600080fd5b8135610e70610e6b82611634565b611607565b9150818183526020840193506020810190508360005b83811015610eb65781358601610e9c8882611040565b845260208401935060208301925050600181019050610e86565b5050505092915050565b6000610ecc8235611721565b905092915050565b600082601f8301121515610ee757600080fd5b8135610efa610ef58261165c565b611607565b91508082526020830160208301858383011115610f1657600080fd5b610f21838284611742565b50505092915050565b600082601f8301121515610f3d57600080fd5b8135610f50610f4b82611688565b611607565b91508082526020830160208301858383011115610f6c57600080fd5b610f77838284611742565b50505092915050565b600060608284031215610f9257600080fd5b610f9c6060611607565b90506000610fac848285016111be565b6000830152506020610fc084828501610ec0565b6020830152506040610fd484828501610ec0565b60408301525092915050565b600060608284031215610ff257600080fd5b610ffc6060611607565b9050600061100c848285016111be565b600083015250602061102084828501610ec0565b602083015250604061103484828501610ec0565b60408301525092915050565b6000610100828403121561105357600080fd5b61105d60c0611607565b9050600061106d84828501610e36565b600083015250602082013567ffffffffffffffff81111561108d57600080fd5b61109984828501610ed4565b60208301525060406110ad848285016111aa565b60408301525060606110c184828501610f80565b60608301525060c06110d584828501610e36565b60808301525060e06110e9848285016111aa565b60a08301525092915050565b6000610100828403121561110857600080fd5b61111260c0611607565b9050600061112284828501610e36565b600083015250602082013567ffffffffffffffff81111561114257600080fd5b61114e84828501610ed4565b6020830152506040611162848285016111aa565b604083015250606061117684828501610f80565b60608301525060c061118a84828501610e36565b60808301525060e061119e848285016111aa565b60a08301525092915050565b60006111b6823561172b565b905092915050565b60006111ca8235611735565b905092915050565b6000602082840312156111e457600080fd5b60006111f284828501610e36565b91505092915050565b6000806000806080858703121561121157600080fd5b600061121f87828801610e36565b945050602085013567ffffffffffffffff81111561123c57600080fd5b61124887828801610f2a565b9350506040611259878288016111aa565b925050606061126a878288016111aa565b91505092959194509250565b60006020828403121561128857600080fd5b600082013567ffffffffffffffff8111156112a257600080fd5b6112ae84828501610e4a565b91505092915050565b6000602082840312156112c957600080fd5b60006112d784828501610ec0565b91505092915050565b600080608083850312156112f357600080fd5b600061130185828601610ec0565b925050602061131285828601610fe0565b9150509250929050565b60006020828403121561132e57600080fd5b600082013567ffffffffffffffff81111561134857600080fd5b611354848285016110f5565b91505092915050565b611366816116b4565b82525050565b611375816116d4565b82525050565b611384816116e0565b82525050565b6000603c82527f4e6f6e63652068617320616c7265616479206265656e207573656420666f722060208301527f7468657365207472616e73616374696f6e20706172616d6574657273000000006040830152606082019050919050565b6000603382527f436f6e74726f6c6c6572206973206e6f7420617574686f72697a656420746f2060208301527f65786563757465207472616e73616374696f6e000000000000000000000000006040830152606082019050919050565b6000602382527f5472616e73616374696f6e206661696c656420647572696e672065786563757460208301527f696f6e00000000000000000000000000000000000000000000000000000000006040830152606082019050919050565b6114aa816116ea565b82525050565b6114b9816116f4565b82525050565b60006020820190506114d4600083018461135d565b92915050565b60006040820190506114ef600083018561135d565b6114fc602083018461135d565b9392505050565b6000604082019050611518600083018561135d565b61152560208301846114a1565b9392505050565b6000602082019050611541600083018461136c565b92915050565b600060208201905061155c600083018461137b565b92915050565b6000608082019050611577600083018761137b565b61158460208301866114b0565b611591604083018561137b565b61159e606083018461137b565b95945050505050565b600060208201905081810360008301526115c08161138a565b9050919050565b600060208201905081810360008301526115e0816113e7565b9050919050565b6000602082019050818103600083015261160081611444565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171561162a57600080fd5b8060405250919050565b600067ffffffffffffffff82111561164b57600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561167357600080fd5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff82111561169f57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b828183376000838301525050505600a265627a7a723058207e80c939dac527f7a49a3750a52842b7d6bec958a29309764d2324ea2e47adb96c6578706572696d656e74616cf500370000000000000000000000005d497982326f641e0b374585ff7c1c1be987856000000000000000000000000092a1e872c74f75f71eaa1fef6e9c1ce85e20f302