608060405234801562000010575f80fd5b506200002d3369d3c21bcecceda10000006200003360201b60201c565b62000297565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620000a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200009b90620001db565b60405180910390fd5b8060025f828254620000b7919062000231565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200010b919062000231565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200017191906200027c565b60405180910390a35050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620001c3601f836200017d565b9150620001d0826200018d565b602082019050919050565b5f6020820190508181035f830152620001f481620001b5565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200023d82620001fb565b91506200024a83620001fb565b925082820190508082111562000265576200026462000204565b5b92915050565b6200027681620001fb565b82525050565b5f602082019050620002915f8301846200026b565b92915050565b610d8480620002a55f395ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c8063313ce56711610064578063313ce5671461013157806370a082311461014f57806395d89b411461017f578063a9059cbb1461019d578063dd62ed3e146101cd57610091565b806306fdde0314610095578063095ea7b3146100b357806318160ddd146100e357806323b872dd14610101575b5f80fd5b61009d6101fd565b6040516100aa919061084c565b60405180910390f35b6100cd60048036038101906100c891906108fd565b610236565b6040516100da9190610955565b60405180910390f35b6100eb61024c565b6040516100f8919061097d565b60405180910390f35b61011b60048036038101906101169190610996565b610255565b6040516101289190610955565b60405180910390f35b6101396102fa565b6040516101469190610a01565b60405180910390f35b61016960048036038101906101649190610a1a565b6102ff565b604051610176919061097d565b60405180910390f35b610187610344565b604051610194919061084c565b60405180910390f35b6101b760048036038101906101b291906108fd565b61037d565b6040516101c49190610955565b60405180910390f35b6101e760048036038101906101e29190610a45565b610393565b6040516101f4919061097d565b60405180910390f35b6040518060400160405280600581526020017f512023203100000000000000000000000000000000000000000000000000000081525081565b5f610242338484610415565b6001905092915050565b5f600254905090565b5f6102618484846105d8565b6102ef84338460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546102ea9190610ab0565b610415565b600190509392505050565b601281565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6040518060400160405280600581526020017f512023203100000000000000000000000000000000000000000000000000000081525081565b5f6103893384846105d8565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a90610b53565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e890610be1565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516105cb919061097d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d90610c6f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90610cfd565b60405180910390fd5b805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106ff9190610ab0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107519190610d1b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107b5919061097d565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156107f95780820151818401526020810190506107de565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61081e826107c2565b61082881856107cc565b93506108388185602086016107dc565b61084181610804565b840191505092915050565b5f6020820190508181035f8301526108648184610814565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61089982610870565b9050919050565b6108a98161088f565b81146108b3575f80fd5b50565b5f813590506108c4816108a0565b92915050565b5f819050919050565b6108dc816108ca565b81146108e6575f80fd5b50565b5f813590506108f7816108d3565b92915050565b5f80604083850312156109135761091261086c565b5b5f610920858286016108b6565b9250506020610931858286016108e9565b9150509250929050565b5f8115159050919050565b61094f8161093b565b82525050565b5f6020820190506109685f830184610946565b92915050565b610977816108ca565b82525050565b5f6020820190506109905f83018461096e565b92915050565b5f805f606084860312156109ad576109ac61086c565b5b5f6109ba868287016108b6565b93505060206109cb868287016108b6565b92505060406109dc868287016108e9565b9150509250925092565b5f60ff82169050919050565b6109fb816109e6565b82525050565b5f602082019050610a145f8301846109f2565b92915050565b5f60208284031215610a2f57610a2e61086c565b5b5f610a3c848285016108b6565b91505092915050565b5f8060408385031215610a5b57610a5a61086c565b5b5f610a68858286016108b6565b9250506020610a79858286016108b6565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610aba826108ca565b9150610ac5836108ca565b9250828203905081811115610add57610adc610a83565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610b3d6024836107cc565b9150610b4882610ae3565b604082019050919050565b5f6020820190508181035f830152610b6a81610b31565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610bcb6022836107cc565b9150610bd682610b71565b604082019050919050565b5f6020820190508181035f830152610bf881610bbf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f610c596025836107cc565b9150610c6482610bff565b604082019050919050565b5f6020820190508181035f830152610c8681610c4d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f610ce76023836107cc565b9150610cf282610c8d565b604082019050919050565b5f6020820190508181035f830152610d1481610cdb565b9050919050565b5f610d25826108ca565b9150610d30836108ca565b9250828201905080821115610d4857610d47610a83565b5b9291505056fea26469706673582212206fb820100f0b52eb49b2f99fbd37ffc832cc65be2ccc8ca2125b98a9bb9e47d264736f6c63430008140033