0x608060405261112d806100136000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063ac542fb814610046578063f04f270714610062578063fbfa77cf1461007e575b600080fd5b610060600480360381019061005b9190610603565b61009c565b005b61007c60048036038101906100779190610952565b6102db565b005b610086610543565b6040516100939190610a88565b60405180910390f35b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016100d79190610ab2565b602060405180830381865afa1580156100f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101189190610ae2565b9050600083838360405160200161013193929190610b1e565b60405160208183030381529060405290506000600167ffffffffffffffff81111561015f5761015e610659565b5b60405190808252806020026020018201604052801561018d5781602001602082028036833780820191505090505b50905084816000815181106101a5576101a4610b55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600167ffffffffffffffff8111156101fc576101fb610659565b5b60405190808252806020026020018201604052801561022a5781602001602082028036833780820191505090505b509050848160008151811061024257610241610b55565b5b60200260200101818152505073ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff16635c38449e308484876040518563ffffffff1660e01b81526004016102a19493929190610db2565b600060405180830381600087803b1580156102bb57600080fd5b505af11580156102cf573d6000803e3d6000fd5b50505050505050505050565b73ba12222222228d8ba445958a75a0704d566bf2c873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461035d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035490610e8f565b60405180910390fd5b6000806000838060200190518101906103769190610eed565b92509250925060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103b79190610ab2565b602060405180830381865afa1580156103d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f89190610ae2565b90508282826104079190610f6f565b14610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90611015565b60405180910390fd5b7f134bde118562a60dcf2d8c52965f586e25cf88a371592e44b78c4aa03bcbac848484604051610478929190611035565b60405180910390a18373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb73ba12222222228d8ba445958a75a0704d566bf2c8886000815181106104c5576104c4610b55565b5b6020026020010151866104d8919061105e565b6040518363ffffffff1660e01b81526004016104f5929190611035565b6020604051808303816000875af1158015610514573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053891906110ca565b505050505050505050565b73ba12222222228d8ba445958a75a0704d566bf2c881565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061059a8261056f565b9050919050565b6105aa8161058f565b81146105b557600080fd5b50565b6000813590506105c7816105a1565b92915050565b6000819050919050565b6105e0816105cd565b81146105eb57600080fd5b50565b6000813590506105fd816105d7565b92915050565b6000806040838503121561061a57610619610565565b5b6000610628858286016105b8565b9250506020610639858286016105ee565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61069182610648565b810181811067ffffffffffffffff821117156106b0576106af610659565b5b80604052505050565b60006106c361055b565b90506106cf8282610688565b919050565b600067ffffffffffffffff8211156106ef576106ee610659565b5b602082029050602081019050919050565b600080fd5b60006107108261058f565b9050919050565b61072081610705565b811461072b57600080fd5b50565b60008135905061073d81610717565b92915050565b6000610756610751846106d4565b6106b9565b9050808382526020820190506020840283018581111561077957610778610700565b5b835b818110156107a2578061078e888261072e565b84526020840193505060208101905061077b565b5050509392505050565b600082601f8301126107c1576107c0610643565b5b81356107d1848260208601610743565b91505092915050565b600067ffffffffffffffff8211156107f5576107f4610659565b5b602082029050602081019050919050565b6000610819610814846107da565b6106b9565b9050808382526020820190506020840283018581111561083c5761083b610700565b5b835b81811015610865578061085188826105ee565b84526020840193505060208101905061083e565b5050509392505050565b600082601f83011261088457610883610643565b5b8135610894848260208601610806565b91505092915050565b600080fd5b600067ffffffffffffffff8211156108bd576108bc610659565b5b6108c682610648565b9050602081019050919050565b82818337600083830152505050565b60006108f56108f0846108a2565b6106b9565b9050828152602081018484840111156109115761091061089d565b5b61091c8482856108d3565b509392505050565b600082601f83011261093957610938610643565b5b81356109498482602086016108e2565b91505092915050565b6000806000806080858703121561096c5761096b610565565b5b600085013567ffffffffffffffff81111561098a5761098961056a565b5b610996878288016107ac565b945050602085013567ffffffffffffffff8111156109b7576109b661056a565b5b6109c38782880161086f565b935050604085013567ffffffffffffffff8111156109e4576109e361056a565b5b6109f08782880161086f565b925050606085013567ffffffffffffffff811115610a1157610a1061056a565b5b610a1d87828801610924565b91505092959194509250565b6000819050919050565b6000610a4e610a49610a448461056f565b610a29565b61056f565b9050919050565b6000610a6082610a33565b9050919050565b6000610a7282610a55565b9050919050565b610a8281610a67565b82525050565b6000602082019050610a9d6000830184610a79565b92915050565b610aac8161058f565b82525050565b6000602082019050610ac76000830184610aa3565b92915050565b600081519050610adc816105d7565b92915050565b600060208284031215610af857610af7610565565b5b6000610b0684828501610acd565b91505092915050565b610b18816105cd565b82525050565b6000606082019050610b336000830186610aa3565b610b406020830185610b0f565b610b4d6040830184610b0f565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610b8f82610a55565b9050919050565b610b9f81610b84565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610bdc82610a55565b9050919050565b610bec81610bd1565b82525050565b6000610bfe8383610be3565b60208301905092915050565b6000602082019050919050565b6000610c2282610ba5565b610c2c8185610bb0565b9350610c3783610bc1565b8060005b83811015610c68578151610c4f8882610bf2565b9750610c5a83610c0a565b925050600181019050610c3b565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b610caa816105cd565b82525050565b6000610cbc8383610ca1565b60208301905092915050565b6000602082019050919050565b6000610ce082610c75565b610cea8185610c80565b9350610cf583610c91565b8060005b83811015610d26578151610d0d8882610cb0565b9750610d1883610cc8565b925050600181019050610cf9565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d6d578082015181840152602081019050610d52565b60008484015250505050565b6000610d8482610d33565b610d8e8185610d3e565b9350610d9e818560208601610d4f565b610da781610648565b840191505092915050565b6000608082019050610dc76000830187610b96565b8181036020830152610dd98186610c17565b90508181036040830152610ded8185610cd5565b90508181036060830152610e018184610d79565b905095945050505050565b600082825260208201905092915050565b7f466c6173684c6f616e54656d706c6174653a2043616c6c6572206e6f7420426160008201527f6c616e636572205661756c740000000000000000000000000000000000000000602082015250565b6000610e79602c83610e0c565b9150610e8482610e1d565b604082019050919050565b60006020820190508181036000830152610ea881610e6c565b9050919050565b6000610eba8261056f565b9050919050565b610eca81610eaf565b8114610ed557600080fd5b50565b600081519050610ee781610ec1565b92915050565b600080600060608486031215610f0657610f05610565565b5b6000610f1486828701610ed8565b9350506020610f2586828701610acd565b9250506040610f3686828701610acd565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f7a826105cd565b9150610f85836105cd565b9250828203905081811115610f9d57610f9c610f40565b5b92915050565b7f466c6173684c6f616e54656d706c6174653a20436f6e7472616374206469642060008201527f6e6f7420676574206c6f616e0000000000000000000000000000000000000000602082015250565b6000610fff602c83610e0c565b915061100a82610fa3565b604082019050919050565b6000602082019050818103600083015261102e81610ff2565b9050919050565b600060408201905061104a6000830185610aa3565b6110576020830184610b0f565b9392505050565b6000611069826105cd565b9150611074836105cd565b925082820190508082111561108c5761108b610f40565b5b92915050565b60008115159050919050565b6110a781611092565b81146110b257600080fd5b50565b6000815190506110c48161109e565b92915050565b6000602082840312156110e0576110df610565565b5b60006110ee848285016110b5565b9150509291505056fea2646970667358221220b18db5fd5f5dfc8accf095f6fe001449dd290deb70ae9409daa6d36cdbbbe53d64736f6c63430008120033