0x608060405234801561001057600080fd5b5061116f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634dbf0f391461003b578063ab2217e41461006c575b600080fd5b6100556004803603810190610050919061086e565b61009c565b604051610063929190610b0f565b60405180910390f35b61008660048036038101906100819190610bb0565b6103cb565b6040516100939190610d36565b60405180910390f35b606080600084849050905060008167ffffffffffffffff8111156100c3576100c2610d58565b5b6040519080825280602002602001820160405280156100f15781602001602082028036833780820191505090505b50905060008267ffffffffffffffff8111156101105761010f610d58565b5b60405190808252806020026020018201604052801561014957816020015b6101366107bb565b81526020019060019003908161012e5790505b50905060005b878790508110156103ba5787878281811061016d5761016c610d87565b5b90506020020160208101906101829190610df4565b73ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f09190610e4d565b83828151811061020357610202610d87565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508787828181106102505761024f610d87565b5b90506020020160208101906102659190610df4565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156102af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d39190610efc565b826dffffffffffffffffffffffffffff169250816dffffffffffffffffffffffffffff1691508063ffffffff16905084848151811061031557610314610d87565b5b60200260200101516000600381106103305761032f610d87565b5b6020020185858151811061034757610346610d87565b5b602002602001015160016003811061036257610361610d87565b5b6020020186868151811061037957610378610d87565b5b602002602001015160026003811061039457610393610d87565b5b6020020183815250838152508381525050505080806103b290610f7e565b91505061014f565b508181945094505050509250929050565b606060008473ffffffffffffffffffffffffffffffffffffffff1663574f2ba36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043e9190610fdb565b90508083111561044c578092505b8383101561048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048690611065565b60405180910390fd5b6000848461049d9190611085565b905060008167ffffffffffffffff8111156104bb576104ba610d58565b5b6040519080825280602002602001820160405280156104f457816020015b6104e16107dd565b8152602001906001900390816104d95790505b50905060005b828110156107ad5760008873ffffffffffffffffffffffffffffffffffffffff16631e3dd18b838a61052c91906110b9565b6040518263ffffffff1660e01b8152600401610548919061111e565b602060405180830381865afa158015610565573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105899190610e4d565b90508073ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa9190610e4d565b83838151811061060d5761060c610d87565b5b602002602001015160006003811061062857610627610d87565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ce9190610e4d565b8383815181106106e1576106e0610d87565b5b60200260200101516001600381106106fc576106fb610d87565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508083838151811061074757610746610d87565b5b602002602001015160026003811061076257610761610d87565b5b602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505080806107a590610f7e565b9150506104fa565b508093505050509392505050565b6040518060600160405280600390602082028036833780820191505090505090565b6040518060600160405280600390602082028036833780820191505090505090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261082e5761082d610809565b5b8235905067ffffffffffffffff81111561084b5761084a61080e565b5b60208301915083602082028301111561086757610866610813565b5b9250929050565b60008060208385031215610885576108846107ff565b5b600083013567ffffffffffffffff8111156108a3576108a2610804565b5b6108af85828601610818565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610912826108e7565b9050919050565b61092281610907565b82525050565b60006109348383610919565b60208301905092915050565b6000602082019050919050565b6000610958826108bb565b61096281856108c6565b935061096d836108d7565b8060005b8381101561099e5781516109858882610928565b975061099083610940565b925050600181019050610971565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600060039050919050565b600081905092915050565b6000819050919050565b6000819050919050565b610a0a816109f7565b82525050565b6000610a1c8383610a01565b60208301905092915050565b6000602082019050919050565b610a3e816109d7565b610a4881846109e2565b9250610a53826109ed565b8060005b83811015610a84578151610a6b8782610a10565b9650610a7683610a28565b925050600181019050610a57565b505050505050565b6000610a988383610a35565b60608301905092915050565b6000602082019050919050565b6000610abc826109ab565b610ac681856109b6565b9350610ad1836109c7565b8060005b83811015610b02578151610ae98882610a8c565b9750610af483610aa4565b925050600181019050610ad5565b5085935050505092915050565b60006040820190508181036000830152610b29818561094d565b90508181036020830152610b3d8184610ab1565b90509392505050565b6000610b5182610907565b9050919050565b610b6181610b46565b8114610b6c57600080fd5b50565b600081359050610b7e81610b58565b92915050565b610b8d816109f7565b8114610b9857600080fd5b50565b600081359050610baa81610b84565b92915050565b600080600060608486031215610bc957610bc86107ff565b5b6000610bd786828701610b6f565b9350506020610be886828701610b9b565b9250506040610bf986828701610b9b565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600060039050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b610c6581610c2f565b610c6f8184610c3a565b9250610c7a82610c45565b8060005b83811015610cab578151610c928782610928565b9650610c9d83610c4f565b925050600181019050610c7e565b505050505050565b6000610cbf8383610c5c565b60608301905092915050565b6000602082019050919050565b6000610ce382610c03565b610ced8185610c0e565b9350610cf883610c1f565b8060005b83811015610d29578151610d108882610cb3565b9750610d1b83610ccb565b925050600181019050610cfc565b5085935050505092915050565b60006020820190508181036000830152610d508184610cd8565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610dc182610907565b9050919050565b610dd181610db6565b8114610ddc57600080fd5b50565b600081359050610dee81610dc8565b92915050565b600060208284031215610e0a57610e096107ff565b5b6000610e1884828501610ddf565b91505092915050565b610e2a81610907565b8114610e3557600080fd5b50565b600081519050610e4781610e21565b92915050565b600060208284031215610e6357610e626107ff565b5b6000610e7184828501610e38565b91505092915050565b60006dffffffffffffffffffffffffffff82169050919050565b610e9d81610e7a565b8114610ea857600080fd5b50565b600081519050610eba81610e94565b92915050565b600063ffffffff82169050919050565b610ed981610ec0565b8114610ee457600080fd5b50565b600081519050610ef681610ed0565b92915050565b600080600060608486031215610f1557610f146107ff565b5b6000610f2386828701610eab565b9350506020610f3486828701610eab565b9250506040610f4586828701610ee7565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f89826109f7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610fbb57610fba610f4f565b5b600182019050919050565b600081519050610fd581610b84565b92915050565b600060208284031215610ff157610ff06107ff565b5b6000610fff84828501610fc6565b91505092915050565b600082825260208201905092915050565b7f73746172742063616e6e6f7420626520686967686572207468616e2073746f70600082015250565b600061104f602083611008565b915061105a82611019565b602082019050919050565b6000602082019050818103600083015261107e81611042565b9050919050565b6000611090826109f7565b915061109b836109f7565b9250828210156110ae576110ad610f4f565b5b828203905092915050565b60006110c4826109f7565b91506110cf836109f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561110457611103610f4f565b5b828201905092915050565b611118816109f7565b82525050565b6000602082019050611133600083018461110f565b9291505056fea26469706673582212202a3425054eb99fc2aa75b3dcdb5088b980daa91c99801d328695ee3c2ee648cf64736f6c634300080f0033