608060405234801562000010575f80fd5b5060405162001b3e38038062001b3e8339818101604052810190620000369190620003f9565b835f9081620000469190620006d4565b508260019081620000589190620006d4565b50600660025f6101000a81548160ff021916908360ff160217905550816006819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003819055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001c99190620007c9565b60405180910390a350505050620007e4565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200023c82620001f4565b810181811067ffffffffffffffff821117156200025e576200025d62000204565b5b80604052505050565b5f62000272620001db565b905062000280828262000231565b919050565b5f67ffffffffffffffff821115620002a257620002a162000204565b5b620002ad82620001f4565b9050602081019050919050565b5f5b83811015620002d9578082015181840152602081019050620002bc565b5f8484015250505050565b5f620002fa620002f48462000285565b62000267565b905082815260208101848484011115620003195762000318620001f0565b5b62000326848285620002ba565b509392505050565b5f82601f830112620003455762000344620001ec565b5b815162000357848260208601620002e4565b91505092915050565b5f819050919050565b620003748162000360565b81146200037f575f80fd5b50565b5f81519050620003928162000369565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003c38262000398565b9050919050565b620003d581620003b7565b8114620003e0575f80fd5b50565b5f81519050620003f381620003ca565b92915050565b5f805f8060808587031215620004145762000413620001e4565b5b5f85015167ffffffffffffffff811115620004345762000433620001e8565b5b62000442878288016200032e565b945050602085015167ffffffffffffffff811115620004665762000465620001e8565b5b62000474878288016200032e565b9350506040620004878782880162000382565b92505060606200049a87828801620003e3565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004f557607f821691505b6020821081036200050b576200050a620004b0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200056f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000532565b6200057b868362000532565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620005bc620005b6620005b08462000360565b62000593565b62000360565b9050919050565b5f819050919050565b620005d7836200059c565b620005ef620005e682620005c3565b8484546200053e565b825550505050565b5f90565b62000605620005f7565b62000612818484620005cc565b505050565b5b8181101562000639576200062d5f82620005fb565b60018101905062000618565b5050565b601f8211156200068857620006528162000511565b6200065d8462000523565b810160208510156200066d578190505b620006856200067c8562000523565b83018262000617565b50505b505050565b5f82821c905092915050565b5f620006aa5f19846008026200068d565b1980831691505092915050565b5f620006c4838362000699565b9150826002028217905092915050565b620006df82620004a6565b67ffffffffffffffff811115620006fb57620006fa62000204565b5b620007078254620004dd565b620007148282856200063d565b5f60209050601f8311600181146200074a575f841562000735578287015190505b620007418582620006b7565b865550620007b0565b601f1984166200075a8662000511565b5f5b8281101562000783578489015182556001820191506020850194506020810190506200075c565b86831015620007a357848901516200079f601f89168262000699565b8355505b6001600288020188555050505b505050505050565b620007c38162000360565b82525050565b5f602082019050620007de5f830184620007b8565b92915050565b61134c80620007f25f395ff3fe6080604052600436106100fd575f3560e01c806395d89b4111610094578063d05c78da11610063578063d05c78da14610345578063dd62ed3e14610381578063e6cb9013146103bd578063e6fdb7ea146103f9578063ece8c31c14610423576100fd565b806395d89b4114610267578063a293d1e814610291578063a9059cbb146102cd578063b5931f7c14610309576100fd565b8063313ce567116100d0578063313ce567146101cd578063484b1c13146101f757806352efea6e1461022157806370a082311461022b576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191575b5f80fd5b34801561010c575f80fd5b5061011561043f565b6040516101229190610e0e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190610ec3565b6104ca565b60405161015e9190610f1b565b60405180910390f35b348015610172575f80fd5b5061017b6105b7565b6040516101889190610f43565b60405180910390f35b34801561019c575f80fd5b506101b760048036038101906101b29190610f5c565b6105bd565b6040516101c49190610f1b565b60405180910390f35b3480156101d8575f80fd5b506101e16106d2565b6040516101ee9190610fc7565b60405180910390f35b348015610202575f80fd5b5061020b6106e4565b6040516102189190610f43565b60405180910390f35b6102296106ea565b005b348015610236575f80fd5b50610251600480360381019061024c9190610fe0565b610833565b60405161025e9190610f43565b60405180910390f35b348015610272575f80fd5b5061027b6108d8565b6040516102889190610e0e565b60405180910390f35b34801561029c575f80fd5b506102b760048036038101906102b2919061100b565b610964565b6040516102c49190610f43565b60405180910390f35b3480156102d8575f80fd5b506102f360048036038101906102ee9190610ec3565b610985565b6040516103009190610f1b565b60405180910390f35b348015610314575f80fd5b5061032f600480360381019061032a919061100b565b61099b565b60405161033c9190610f43565b60405180910390f35b348015610350575f80fd5b5061036b6004803603810190610366919061100b565b6109bb565b6040516103789190610f43565b60405180910390f35b34801561038c575f80fd5b506103a760048036038101906103a29190611049565b6109f0565b6040516103b49190610f43565b60405180910390f35b3480156103c8575f80fd5b506103e360048036038101906103de919061100b565b610a72565b6040516103f09190610f43565b60405180910390f35b348015610404575f80fd5b5061040d610a93565b60405161041a9190611096565b60405180910390f35b61043d60048036038101906104389190611110565b610ab8565b005b5f805461044b90611188565b80601f016020809104026020016040519081016040528092919081815260200182805461047790611188565b80156104c25780601f10610499576101008083540402835291602001916104c2565b820191905f5260205f20905b8154815290600101906020018083116104a557829003601f168201915b505050505081565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105a59190610f43565b60405180910390a36001905092915050565b60035481565b5f61064060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205483610964565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506106c7848484610c0a565b600190509392505050565b60025f9054906101000a900460ff1681565b60065481565b5f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516107c69190610f43565b60405180910390a35f60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108cd5760045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506108d3565b60065490505b919050565b600180546108e590611188565b80601f016020809104026020016040519081016040528092919081815260200182805461091190611188565b801561095c5780601f106109335761010080835404028352916020019161095c565b820191905f5260205f20905b81548152906001019060200180831161093f57829003601f168201915b505050505081565b5f82821115610971575f80fd5b818361097d91906111e5565b905092915050565b5f610991338484610c0a565b6001905092915050565b5f8082116109a7575f80fd5b81836109b39190611245565b905092915050565b5f81836109c89190611275565b90505f8314806109e257508183826109e09190611245565b145b6109ea575f80fd5b92915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8183610a7f91906112b6565b905082811015610a8d575f80fd5b92915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8282905090505f5b81811015610b8357838382818110610adc57610adb6112e9565b5b9050602002016020810190610af19190610fe0565b73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051610b709190610f43565b60405180910390a3806001019050610ac1565b5080600654610b929190611275565b60045f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bfe91906111e5565b92505081905550505050565b610c5160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610964565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610cd960045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205482610a72565b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d779190610f43565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610dbb578082015181840152602081019050610da0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610de082610d84565b610dea8185610d8e565b9350610dfa818560208601610d9e565b610e0381610dc6565b840191505092915050565b5f6020820190508181035f830152610e268184610dd6565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e5f82610e36565b9050919050565b610e6f81610e55565b8114610e79575f80fd5b50565b5f81359050610e8a81610e66565b92915050565b5f819050919050565b610ea281610e90565b8114610eac575f80fd5b50565b5f81359050610ebd81610e99565b92915050565b5f8060408385031215610ed957610ed8610e2e565b5b5f610ee685828601610e7c565b9250506020610ef785828601610eaf565b9150509250929050565b5f8115159050919050565b610f1581610f01565b82525050565b5f602082019050610f2e5f830184610f0c565b92915050565b610f3d81610e90565b82525050565b5f602082019050610f565f830184610f34565b92915050565b5f805f60608486031215610f7357610f72610e2e565b5b5f610f8086828701610e7c565b9350506020610f9186828701610e7c565b9250506040610fa286828701610eaf565b9150509250925092565b5f60ff82169050919050565b610fc181610fac565b82525050565b5f602082019050610fda5f830184610fb8565b92915050565b5f60208284031215610ff557610ff4610e2e565b5b5f61100284828501610e7c565b91505092915050565b5f806040838503121561102157611020610e2e565b5b5f61102e85828601610eaf565b925050602061103f85828601610eaf565b9150509250929050565b5f806040838503121561105f5761105e610e2e565b5b5f61106c85828601610e7c565b925050602061107d85828601610e7c565b9150509250929050565b61109081610e55565b82525050565b5f6020820190506110a95f830184611087565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126110d0576110cf6110af565b5b8235905067ffffffffffffffff8111156110ed576110ec6110b3565b5b602083019150836020820283011115611109576111086110b7565b5b9250929050565b5f806020838503121561112657611125610e2e565b5b5f83013567ffffffffffffffff81111561114357611142610e32565b5b61114f858286016110bb565b92509250509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061119f57607f821691505b6020821081036111b2576111b161115b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111ef82610e90565b91506111fa83610e90565b9250828203905081811115611212576112116111b8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61124f82610e90565b915061125a83610e90565b92508261126a57611269611218565b5b828204905092915050565b5f61127f82610e90565b915061128a83610e90565b925082820261129881610e90565b915082820484148315176112af576112ae6111b8565b5b5092915050565b5f6112c082610e90565b91506112cb83610e90565b92508282019050808211156112e3576112e26111b8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea264697066735822122024b3af2638e3d205c7ec8bd34a708edbf79c543ffd4c19bc2a66b341d70a745964736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000001ddb2e533b90000000000000000000000000095ad61b0a150d79219dcf64e1e6cc01f0b64c4ce0000000000000000000000000000000000000000000000000000000000000012232073686962616e6574776f726b2e6f72670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f566973697420776562736974652073686962616e6574776f726b2e6f726720746f20636c61696d20726577617264730000000000000000000000000000000000