6080604052601260ff16600a61001591906103c2565b620186a0610023919061040c565b5f556064600255348015610035575f80fd5b503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f54610084919061047a565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f546100d3919061047a565b60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516101ae91906104b9565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161025091906104b9565b60405180910390a36104d2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156102df578086048111156102bb576102ba61025d565b5b60018516156102ca5780820291505b80810290506102d88561028a565b945061029f565b94509492505050565b5f826102f757600190506103b2565b81610304575f90506103b2565b816001811461031a576002811461032457610353565b60019150506103b2565b60ff8411156103365761033561025d565b5b8360020a91508482111561034d5761034c61025d565b5b506103b2565b5060208310610133831016604e8410600b84101617156103885782820a9050838111156103835761038261025d565b5b6103b2565b6103958484846001610296565b925090508184048111156103ac576103ab61025d565b5b81810290505b9392505050565b5f819050919050565b5f6103cc826103b9565b91506103d7836103b9565b92506104047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846102e8565b905092915050565b5f610416826103b9565b9150610421836103b9565b925082820261042f816103b9565b915082820484148315176104465761044561025d565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610484826103b9565b915061048f836103b9565b92508261049f5761049e61044d565b5b828204905092915050565b6104b3816103b9565b82525050565b5f6020820190506104cc5f8301846104aa565b92915050565b61164a806104df5f395ff3fe6080604052600436106100dc575f3560e01c806370a082311161007e578063a9059cbb11610058578063a9059cbb146102b6578063c796f3e0146102f2578063dd62ed3e146102fc578063f851a44014610338576100dc565b806370a08231146102265780637ff9b5961461026257806395d89b411461028c576100dc565b806323b872dd116100ba57806323b872dd146101705780632fccb2c4146101ac578063313ce567146101d45780636a61e5fc146101fe576100dc565b806306fdde03146100e0578063095ea7b31461010a57806318160ddd14610146575b5f80fd5b3480156100eb575f80fd5b506100f4610362565b6040516101019190610ef3565b60405180910390f35b348015610115575f80fd5b50610130600480360381019061012b9190610fa4565b61039b565b60405161013d9190610ffc565b60405180910390f35b348015610151575f80fd5b5061015a610488565b6040516101679190611024565b60405180910390f35b34801561017b575f80fd5b506101966004803603810190610191919061103d565b610490565b6040516101a39190610ffc565b60405180910390f35b3480156101b7575f80fd5b506101d260048036038101906101cd91906110c8565b610770565b005b3480156101df575f80fd5b506101e8610942565b6040516101f59190611121565b60405180910390f35b348015610209575f80fd5b50610224600480360381019061021f919061113a565b610947565b005b348015610231575f80fd5b5061024c60048036038101906102479190611165565b6109e0565b6040516102599190611024565b60405180910390f35b34801561026d575f80fd5b50610276610a26565b6040516102839190611024565b60405180910390f35b348015610297575f80fd5b506102a0610a2c565b6040516102ad9190610ef3565b60405180910390f35b3480156102c1575f80fd5b506102dc60048036038101906102d79190610fa4565b610a65565b6040516102e99190610ffc565b60405180910390f35b6102fa610bfb565b005b348015610307575f80fd5b50610322600480360381019061031d9190611190565b610ddc565b60405161032f9190611024565b60405180910390f35b348015610343575f80fd5b5061034c610e5e565b60405161035991906111dd565b60405180910390f35b6040518060400160405280600881526020017f544558544f4b454e00000000000000000000000000000000000000000000000081525081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104769190611024565b60405180910390a36001905092915050565b5f8054905090565b5f8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050890611240565b60405180910390fd5b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156105cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c3906112a8565b60405180910390fd5b8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461061891906112f3565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461066b9190611326565b925050819055508160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106f991906112f3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161075d9190611024565b60405180910390a3600190509392505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f6906113a3565b60405180910390fd5b47811115610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108399061140b565b60405180910390fd5b8060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461088e91906112f3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156108d8573d5f803e3d5ffd5b508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109369190611024565b60405180910390a35050565b601281565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cd90611499565b60405180910390fd5b8060028190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60025481565b6040518060400160405280600481526020017f5458544b0000000000000000000000000000000000000000000000000000000081525081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610add90611240565b60405180910390fd5b8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b3291906112f3565b925050819055508160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b859190611326565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610be99190611024565b60405180910390a36001905092915050565b5f3411610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490611527565b60405180910390fd5b5f60025434610c4c9190611545565b90508060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc5906115f6565b60405180910390fd5b8060035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d1a91906112f3565b925050819055508060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d6d9190611326565b925050819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dd19190611024565b60405180910390a350565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610ec582610e83565b610ecf8185610e8d565b9350610edf818560208601610e9d565b610ee881610eab565b840191505092915050565b5f6020820190508181035f830152610f0b8184610ebb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f4082610f17565b9050919050565b610f5081610f36565b8114610f5a575f80fd5b50565b5f81359050610f6b81610f47565b92915050565b5f819050919050565b610f8381610f71565b8114610f8d575f80fd5b50565b5f81359050610f9e81610f7a565b92915050565b5f8060408385031215610fba57610fb9610f13565b5b5f610fc785828601610f5d565b9250506020610fd885828601610f90565b9150509250929050565b5f8115159050919050565b610ff681610fe2565b82525050565b5f60208201905061100f5f830184610fed565b92915050565b61101e81610f71565b82525050565b5f6020820190506110375f830184611015565b92915050565b5f805f6060848603121561105457611053610f13565b5b5f61106186828701610f5d565b935050602061107286828701610f5d565b925050604061108386828701610f90565b9150509250925092565b5f61109782610f17565b9050919050565b6110a78161108d565b81146110b1575f80fd5b50565b5f813590506110c28161109e565b92915050565b5f80604083850312156110de576110dd610f13565b5b5f6110eb858286016110b4565b92505060206110fc85828601610f90565b9150509250929050565b5f60ff82169050919050565b61111b81611106565b82525050565b5f6020820190506111345f830184611112565b92915050565b5f6020828403121561114f5761114e610f13565b5b5f61115c84828501610f90565b91505092915050565b5f6020828403121561117a57611179610f13565b5b5f61118784828501610f5d565b91505092915050565b5f80604083850312156111a6576111a5610f13565b5b5f6111b385828601610f5d565b92505060206111c485828601610f5d565b9150509250929050565b6111d781610f36565b82525050565b5f6020820190506111f05f8301846111ce565b92915050565b7f53616c646f20696e737566696369656e746500000000000000000000000000005f82015250565b5f61122a601283610e8d565b9150611235826111f6565b602082019050919050565b5f6020820190508181035f8301526112578161121e565b9050919050565b7f4e6f207065726d697469646f00000000000000000000000000000000000000005f82015250565b5f611292600c83610e8d565b915061129d8261125e565b602082019050919050565b5f6020820190508181035f8301526112bf81611286565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112fd82610f71565b915061130883610f71565b92508282039050818111156113205761131f6112c6565b5b92915050565b5f61133082610f71565b915061133b83610f71565b9250828201905080821115611353576113526112c6565b5b92915050565b7f4f6e6c792061646d696e732063616e20646f20746869730000000000000000005f82015250565b5f61138d601783610e8d565b915061139882611359565b602082019050919050565b5f6020820190508181035f8301526113ba81611381565b9050919050565b7f496e73756666696369656e742062616c616e636520696e20636f6e74726163745f82015250565b5f6113f5602083610e8d565b9150611400826113c1565b602082019050919050565b5f6020820190508181035f830152611422816113e9565b9050919050565b7f536f6c6f20656c2061646d696e2070756564652063616d6269617220656c20705f8201527f726563696f000000000000000000000000000000000000000000000000000000602082015250565b5f611483602583610e8d565b915061148e82611429565b604082019050919050565b5f6020820190508181035f8301526114b081611477565b9050919050565b7f446562657320656e7669617220616c676f2064652065746865722070617261205f8201527f636f6d7072617220746f6b656e73000000000000000000000000000000000000602082015250565b5f611511602e83610e8d565b915061151c826114b7565b604082019050919050565b5f6020820190508181035f83015261153e81611505565b9050919050565b5f61154f82610f71565b915061155a83610f71565b925082820261156881610f71565b9150828204841483151761157f5761157e6112c6565b5b5092915050565b7f4e6f2068617920737566696369656e746520746f6b656e7320646973706f6e695f8201527f626c657300000000000000000000000000000000000000000000000000000000602082015250565b5f6115e0602483610e8d565b91506115eb82611586565b604082019050919050565b5f6020820190508181035f83015261160d816115d4565b905091905056fea2646970667358221220f78d63b52dbe64eee15406887de00a6e8b9e04443f7c471ff7bda95ca177d26b64736f6c634300081a0033