0x60806040523480156200001157600080fd5b5060405162001227380380620012278339818101604052810190620000379190620001d5565b620000576200004b6200009f60201b60201c565b620000a760201b60201c565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000207565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200019d8262000170565b9050919050565b620001af8162000190565b8114620001bb57600080fd5b50565b600081519050620001cf81620001a4565b92915050565b600060208284031215620001ee57620001ed6200016b565b5b6000620001fe84828501620001be565b91505092915050565b61101080620002176000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b14610101578063bc197c811461011f578063f23a6e611461014f578063f2fde38b1461017f57610088565b806301ffc9a71461008d578063205c9cc7146100bd57806326af4832146100db578063715018a6146100f7575b600080fd5b6100a760048036038101906100a29190610867565b61019b565b6040516100b491906108af565b60405180910390f35b6100c5610215565b6040516100d2919061090b565b60405180910390f35b6100f560048036038101906100f091906109c6565b61023b565b005b6100ff6102ba565b005b6101096102ce565b604051610116919061090b565b60405180910390f35b61013960048036038101906101349190610ae8565b6102f7565b6040516101469190610bd3565b60405180910390f35b61016960048036038101906101649190610bee565b610485565b6040516101769190610bd3565b60405180910390f35b61019960048036038101906101949190610c88565b6105ce565b005b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061020e575061020d82610651565b5b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6102436106bb565b8273ffffffffffffffffffffffffffffffffffffffff1663f242432a308685856040518563ffffffff1660e01b81526004016102829493929190610cfb565b600060405180830381600087803b15801561029c57600080fd5b505af11580156102b0573d6000803e3d6000fd5b5050505050505050565b6102c26106bb565b6102cc6000610739565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038090610db0565b60405180910390fd5b6001878790501480156103b657506000878760008181106103ad576103ac610dd0565b5b90506020020135145b80156103c55750602083839050145b610404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103fb90610e4b565b60405180910390fd5b8484600081811061041857610417610dd0565b5b905060200201358873ffffffffffffffffffffffffffffffffffffffff167fd6239b2e1af6e5fbc94f7f9fb28a3d7d793eeb715cfbe1d6c8c932e2bdc11e5d8585604051610467929190610eb8565b60405180910390a363bc197c8160e01b905098975050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050e90610db0565b60405180910390fd5b60008514801561052a5750602083839050145b610569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056090610e4b565b60405180910390fd5b838673ffffffffffffffffffffffffffffffffffffffff167fd6239b2e1af6e5fbc94f7f9fb28a3d7d793eeb715cfbe1d6c8c932e2bdc11e5d85856040516105b2929190610eb8565b60405180910390a363f23a6e6160e01b90509695505050505050565b6105d66106bb565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063c90610f4e565b60405180910390fd5b61064e81610739565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6106c36107fd565b73ffffffffffffffffffffffffffffffffffffffff166106e16102ce565b73ffffffffffffffffffffffffffffffffffffffff1614610737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072e90610fba565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6108448161080f565b811461084f57600080fd5b50565b6000813590506108618161083b565b92915050565b60006020828403121561087d5761087c610805565b5b600061088b84828501610852565b91505092915050565b60008115159050919050565b6108a981610894565b82525050565b60006020820190506108c460008301846108a0565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108f5826108ca565b9050919050565b610905816108ea565b82525050565b600060208201905061092060008301846108fc565b92915050565b61092f816108ea565b811461093a57600080fd5b50565b60008135905061094c81610926565b92915050565b600061095d826108ea565b9050919050565b61096d81610952565b811461097857600080fd5b50565b60008135905061098a81610964565b92915050565b6000819050919050565b6109a381610990565b81146109ae57600080fd5b50565b6000813590506109c08161099a565b92915050565b600080600080608085870312156109e0576109df610805565b5b60006109ee8782880161093d565b94505060206109ff8782880161097b565b9350506040610a10878288016109b1565b9250506060610a21878288016109b1565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112610a5257610a51610a2d565b5b8235905067ffffffffffffffff811115610a6f57610a6e610a32565b5b602083019150836020820283011115610a8b57610a8a610a37565b5b9250929050565b60008083601f840112610aa857610aa7610a2d565b5b8235905067ffffffffffffffff811115610ac557610ac4610a32565b5b602083019150836001820283011115610ae157610ae0610a37565b5b9250929050565b60008060008060008060008060a0898b031215610b0857610b07610805565b5b6000610b168b828c0161093d565b9850506020610b278b828c0161093d565b975050604089013567ffffffffffffffff811115610b4857610b4761080a565b5b610b548b828c01610a3c565b9650965050606089013567ffffffffffffffff811115610b7757610b7661080a565b5b610b838b828c01610a3c565b9450945050608089013567ffffffffffffffff811115610ba657610ba561080a565b5b610bb28b828c01610a92565b92509250509295985092959890939650565b610bcd8161080f565b82525050565b6000602082019050610be86000830184610bc4565b92915050565b60008060008060008060a08789031215610c0b57610c0a610805565b5b6000610c1989828a0161093d565b9650506020610c2a89828a0161093d565b9550506040610c3b89828a016109b1565b9450506060610c4c89828a016109b1565b935050608087013567ffffffffffffffff811115610c6d57610c6c61080a565b5b610c7989828a01610a92565b92509250509295509295509295565b600060208284031215610c9e57610c9d610805565b5b6000610cac8482850161093d565b91505092915050565b610cbe81610990565b82525050565b600082825260208201905092915050565b50565b6000610ce5600083610cc4565b9150610cf082610cd5565b600082019050919050565b600060a082019050610d1060008301876108fc565b610d1d60208301866108fc565b610d2a6040830185610cb5565b610d376060830184610cb5565b8181036080830152610d4881610cd8565b905095945050505050565b600082825260208201905092915050565b7f6f6e6c7920770000000000000000000000000000000000000000000000000000600082015250565b6000610d9a600683610d53565b9150610da582610d64565b602082019050919050565b60006020820190508181036000830152610dc981610d8d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f696e76616c696420706172616d00000000000000000000000000000000000000600082015250565b6000610e35600d83610d53565b9150610e4082610dff565b602082019050919050565b60006020820190508181036000830152610e6481610e28565b9050919050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000610e978385610cc4565b9350610ea4838584610e6b565b610ead83610e7a565b840190509392505050565b60006020820190508181036000830152610ed3818486610e8b565b90509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610f38602683610d53565b9150610f4382610edc565b604082019050919050565b60006020820190508181036000830152610f6781610f2b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610fa4602083610d53565b9150610faf82610f6e565b602082019050919050565b60006020820190508181036000830152610fd381610f97565b905091905056fea264697066735822122021b7972daf117eafa48375324f7a26235cd508a590c992afa6988aec4e9af2d364736f6c6343000812003300000000000000000000000056b169c0f63d392dfd743e22bd9da4f6a8098372